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 originalfscanf(rd,"%d", &id1);
if(*id==id1) // Y si alguno cumple esta condicion, es que esta registrado
{
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#include<stdio.h>
#include<stdlib.h>
void comprobar( int *id);
int main()
{
int id=9999; // Usar el id del loggin el id
comprobar(&id);
// system("pause");
return 0;
}
void comprobar(int *id)
{
int id1,dia1,mes1;
char nombre1[50];
FILE *rd;
rd
= fopen("pacientes.txt","rt"); if(rd==NULL)
{
printf("No se puede abrir el archivo\n"); }
fscanf(rd
,"%d %d %d %s",&id1
,&dia1
,&mes1
,nombre1
);
if(*id==id1) // Y si alguno cumple esta condicion, es que esta registrado
{
printf("El usuario %s esta registrado, nacido el %d del mes %d \n" ,nombre1
, dia1
, mes1
); break; /* si se encuentra el usuario entonces no hace falta q recorra TODO el arhcivo.
Por lo tanto obligo a salir del bucle con el break */
}
fscanf(rd
,"%d %d %d %s",&id1
,&dia1
,&mes1
,nombre1
); }
if(*id!= id1)
{
printf("El usuario no esta registrado\n"); }
return;
}
Saludos