Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define APP_PATH "archivo.dat"
- typedef struct {
- int id_cliente;
- char usuario[20];
- char password[10];
- } _USUARIO_;
- //////////////////////////////////////////////////////////////
- // Debug
- //////////////////////////////////////////////////////////////
- void reset_file() // Se que no es necesario pero la funcion inserta, no sobreescribe.
- {
- FILE *buffer = fopen(APP_PATH, "wb");
- fclose(buffer);
- }
- //////////////////////////////////////////////////////////////
- // func: user_exist (verifica si el nombre de usuario existe en el archivo)
- // \param1: nombre de usuario para tomar como referencia.
- // \param1: toma los usuarios que estan en el archivo
- //////////////////////////////////////////////////////////////
- int user_exist(char name[30], _USUARIO_ *user)
- {
- FILE * buffer;
- int ans = 0;
- /* Abre el archivo en modo lectura */
- buffer = fopen(APP_PATH, "rb");
- if (buffer == NULL) return 0;
- /* Se busca el nombre del usuario que conincida con param1 */
- fread(&(*user), sizeof(_USUARIO_), 1, buffer);
- while (!feof(buffer)) {
- //printf("Estoy buscando a: %s -> %s\n", (*user).usuario, name);
- if (!strcmp(name, (*user).usuario)) {
- ans = 1;
- printf("\nEl usuario %s ya se encuentra registrado\n", (*user).usuario);
- break;
- }
- fread(&(*user), sizeof(_USUARIO_), 1, buffer);
- }
- /* Cierra el archivo */
- fclose(buffer);
- return ans;
- }
- //////////////////////////////////////////////////////////////
- // Inserta un nuevo usuario al archivo existente
- // (en el caso de no existir, lo crea)
- // \param1 -> La estructura del usuario que se quiere guardar
- //////////////////////////////////////////////////////////////
- int insert_user(_USUARIO_ user)
- {
- FILE *buffer;
- /* Abre el archivo para agregar datos al final */
- buffer = fopen(APP_PATH, "ab"); /* Añade datos al final. Si el archivo no existe, es creado */
- if (buffer == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
- return 0;
- } else {
- fwrite(&user, sizeof(_USUARIO_), 1, buffer);
- /* Cierra el archivo */
- fclose(buffer);
- }
- return 1;
- }
- //////////////////////////////////////////////////////////////
- // Se utiliza para pasar la estructura cargada como parametro
- // en la funcion insert_user
- // \param1 -> nombre del cliente
- // \param2 -> password del cliente
- // \param3 -> identificador del cliente
- //////////////////////////////////////////////////////////////
- _USUARIO_ newuser(char name[20], char pass[10], int id)
- {
- _USUARIO_ persona;
- persona.id_cliente = id;
- strcpy(persona.usuario, name);
- strcpy(persona.password, pass);
- return persona;
- }
- //////////////////////////////////////////////////////////////
- // Genialidad de magnus mefisto
- // \param -> CORTA LA BOCHA
- // RETORNA LA WEA COMPLETA
- //////////////////////////////////////////////////////////////
- _USUARIO_ *getalluser()
- {
- FILE *buffer;
- _USUARIO_ usuario;
- _USUARIO_ *usuarios; /* Vector dinámico de elementos */
- int i;
- /* Abre el archivo en modo lectura */
- buffer = fopen(APP_PATH, "rb");
- if (buffer == NULL) { /* Si no se pudo abrir el archivo, el valor de archivo es NULL */
- usuarios = NULL;
- printf("No hay usuarios registados.");
- } else {
- fseek(buffer, 0, SEEK_END); /* Posiciona el cursor al final del archivo */
- usuarios = (_USUARIO_ *)malloc((ftell(buffer) / sizeof(_USUARIO_)) * sizeof(_USUARIO_));
- /* Se reserva memoria para todos los elementos almacenados en el archivo */
- /* Se recorre el archivo secuencialmente */
- fseek(buffer, 0, SEEK_SET); /* Posiciona el cursor al principio del archivo */
- fread(&usuario, sizeof(_USUARIO_), 1, buffer);
- i = 0;
- while (!feof(buffer)) {
- usuarios[i++] = usuario;
- fread(&usuario, sizeof(usuario), 1, buffer);
- }
- /* Cierra el archivo */
- fclose(buffer);
- }
- return usuarios;
- }
- //////////////////////////////////////////////////////////////
- // Imprime los usuarios que se cargaron en el archivo
- //////////////////////////////////////////////////////////////
- void show_users(int cantidad)
- {
- _USUARIO_ *usuarios;
- usuarios = getalluser();
- int i;
- for (i = 0; i < cantidad; ++i) {
- printf("\n-------------------------------------------\n");
- printf("userid: %d\n", usuarios[i].id_cliente);
- printf("User: %s\n", usuarios[i].usuario);
- printf("password: %s\n", usuarios[i].password);
- printf("-------------------------------------------\n");
- }
- }
- int main()
- {
- reset_file();
- insert_user(newuser("Dunkan", "pass123", 1));
- insert_user(newuser("Bone", "passwood", 2));
- insert_user(newuser("Mhaien", "silla321", 3));
- insert_user(newuser("nacHO", "nachOasd", 4));
- show_users(4);
- if(!user_exist("Dunkan", getalluser())) printf("No se ha podido encontrar el usuario\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement