Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/05/2013, 18:03
cesar_casla
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Leer bloc de notas. URGEE :(

hola!
Cita:
la profesora me dijo que asi no valia
mmm q un profesor te diga "no vale" la verdad me parece muy mal. Para mi gusto mientras un codigo funcione, esta bien; luego se puede discutir si el codigo se puede optimizar, controlar errores, etc...

Te marco algunas cosas mas del primer codigo:
- estas haciendo dos lecturas en id1, es decir:
Código vb:
Ver original
  1. fscanf(rd,"%d", &id1);
  2. if(*id==id1) // Y si alguno cumple esta condicion, es que esta registrado
  3.         {
  4. fscanf(rd,"%d %d %d %s",&id1,&dia1,&mes1,nombre1[50]);
si entra al if entonces volves a querer almacenar algo en id1, pero el cursor ya avando por lo tanto estarias leyendo mal. Ademas no tenes q poner nombre1[50] solo va nombre1

- id no hace falta q lo pases por referencia, ya q no haces ningun cambio en la funcion

- Para recorrer todo el archivo y encontrar el id deseado, solo hace falta poner todo en un bucle(comprobando q no sea fin de archivo)


En fin hace mucho no hago un programa, asi q subo las modificaciones(el archivo de texto debe estar cargado con datos):
Código C:
Ver original
  1. #include<stdio.h>
  2.     #include<stdlib.h>
  3.      
  4.     void comprobar( int *id);
  5.      
  6.     int main()
  7.     {
  8.         int id=9999; // Usar el id del loggin el id
  9.         comprobar(&id);
  10.      
  11.      
  12.      //   system("pause");
  13.      return 0;
  14.     }
  15.      
  16.     void comprobar(int *id)
  17.         {
  18.             int id1,dia1,mes1;
  19.             char nombre1[50];
  20.             FILE *rd;
  21.             rd = fopen("pacientes.txt","rt");
  22.             if(rd==NULL)
  23.             {
  24.                 printf("No se puede abrir el archivo\n");
  25.                 exit(1);
  26.             }
  27.            
  28.             fscanf(rd,"%d %d %d %s",&id1,&dia1,&mes1,nombre1);
  29.             while(!feof(rd)){
  30.                
  31.                 if(*id==id1) // Y si alguno cumple esta condicion, es que esta registrado
  32.                 {  
  33.                     printf("El usuario %s esta registrado, nacido el %d del mes %d \n" ,nombre1, dia1, mes1);
  34.                     break; /* si se encuentra el usuario entonces no hace falta q recorra TODO el arhcivo.
  35.                     Por lo tanto obligo a salir del bucle con el break */
  36.                 }
  37.                 fscanf(rd,"%d %d %d %s",&id1,&dia1,&mes1,nombre1);
  38.             }
  39.             if(*id!= id1)
  40.             {
  41.                 printf("El usuario no esta registrado\n");
  42.             }
  43.         return;
  44.     }


Saludos