[ Foro de C ]

identificador interno en una estructura

12-Jun-2014 17:01
Invitado (juan)
4 Respuestas

Hola, estoy haciendo un programa que trate de guardar usuarios en un archivo, pero tengo un problema. Me pide que a parte del login de entrada, el password, y el permiso de admision, genere un identificador interno de usuario (uuid) dentro de la estructura. Éste es un entero asignado automáticamente durante el registro del usuario (valor secuencial que comienza en cero y se incrementa en uno para cada nuevo usuario y cuyo valor máximo es 29).
Gracias de antemano.


17-Jun-2014 22:20
Invitado (juan)

la funcion que hice fue esta, a ver si alguien me puede ayudar:


void registrar_usuario(){
    FILE* arch;                      
    char* archivo="listaregistrados.txt";
    usuario cliente;
    
    arch=fopen(archivo, "a");
    if(arch==NULL) return -1;
    
    printf("Pon nombre de nuevo usuario: ");            
    fflush(stdin);
    scanf(" %[^\n]",cliente.login);                  
    printf("Pon contraseña de nuevo usuario: ");       
    fflush(stdin);
    scanf(" %[^\n]",cliente.password);                  
    printf("Indica si eres administrador(1) o eres usuario normal(0): ");          
    fflush(stdin);
    scanf(" %[^\n]",cliente.permiso);                                               
    fprintf(arch,"\r\n%s \n",cliente.login);                 
    fprintf(arch,"\r\n%s \n",cliente.password);              
    fprintf(arch,"\r\n%s \n",cliente.permiso);               
    fclose(arch);                           
}



18-Jun-2014 01:36
Luis Torres (+18)

Por lo que veo te faltó escribir en el archivo el campo "uid", el cual forma parte de la estructura de tipo "usuario" y se autoincrementa cada vez que un nuevo usuario es leído. Necesitas generar el código para que este valor se incremente para luego ser almacenado en el archivo.
Saludos.


18-Jun-2014 12:49
Invitado (juan)

Ese es el problema que tengo, que no se como hacer para que se me autoincremente.
saludos


18-Jun-2014 17:44
Luis Torres (+18)

Eso depende de cómo vas a introducir a los usuarios, si todos de una vez o, unos hoy otros mañana y así.
El caso más sencillo es cuando los vas a guardarlos todos de una vez. Tú elaboraste el código de la función para introducir cada usuario, pero esta función seguramente va a ser llamada desde un ciclo que va pidiendo usuario por usuario hasta completarlos todos, este ciclo estará ubicado en la función main. Para este caso, deberás crear una variable contadora inicializada en cero y, una vez que entre en el ciclo deberá incrementarse en uno cada vez que haya una nueva iteración (contador++). Para tener ese valor en tu función, necesitas agregarle una variable entera como argumento ( void registrar_usuario(int cont) ), de esta manera sabrás cuál valor le tocará asignar a cada usuario nuevo, ese valor se lo asignarás en el campo respectivo en "cliente" (dicho campo deberá haberse declarado previamente). Eso es todo en lo que respecta a este caso.
Para el caso en el que los usuarios vayan a almacenarse en distintas sesiones de trabajo, deberás consultar en el archivo ya creado cuál usuario tiene el máximo valor, dicho valor deberás incrementarlo de manera similar para cada usuario nuevo.
Saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)