
Originally Posted by
jimblumberg
Show what you've tried, your latest complete program.
Why the switch to fgets()?
What do you think fread() brings to the table?
Ok
I have changed the way the information was saved into the file using a structure
Code:
struct medicos
{
int idMedico,telefone, salario, anos, idade;
char localidade[100], nomecompleto[100], especialidade[100], horario[100], nint[100];
}med;
then i use a function to create new records
Code:
void criarficha() { //Menu_2 -> 1 - Criar ficha de admissão de profissional de saúde
printf("\nFICHA DE ADMISSÃO DO PROFISSIONAL DE SAÚDE. ");
printf("\nIntroduza o número interno do profissional de saúde: ");
scanf("%s", &med.idMedico);
fflush(stdin);
printf("\nIntroduza o nome completo do profissional de saúde: ");
scanf("%[^\n]s", &med.nomecompleto, 100);
fflush(stdin);
printf("\nIntroduza a idade do profissional de saúde: ");
scanf("%d", &med.idade);
fflush(stdin);
printf("\nIntroduza a especialidade do profissional de saúde: ");
scanf("%s", &med.especialidade, 100);
fflush(stdin);
printf("\nIntroduza o número de anos de experiência do profissional de saúde: ");
scanf("%d", &med.anos);
fflush(stdin);
printf("\nIntroduza a localidade do profissional de saúde: ");
scanf("%[^\n]s", &med.localidade, 100);
fflush(stdin);
printf("\nIntroduza o número de telefone do profissional de saúde: ");
scanf("%d", &med.telefone);
fflush(stdin);
printf("\nIntroduza o salário, por mês, do profissional de saúde: ");
scanf("%d", &med.salario);
fflush(stdin);
printf("\nIntroduza o horário semanal do profissional de saúde: ");
scanf("%s", &med.horario, 100);
fflush(stdin);
FILE *fp;
fp = fopen("fichaMedicos.dat", "a+");
fwrite(&med, sizeof(med), 1, fp);
fclose(fp);
}
Finally when i want to check by id i use another function
Code:
int loginprofsaude() {
int r, s, avl;
printf("\nID: ");
scanf("%s",r);
FILE *fp;
if(fp==NULL)
{
printf("File could not open");
exit(0);
}
avl = avlrollno(r);
if (avl == 0)
printf("This id doesn't exist\n",r);
else
{
fp = fopen("fichaMedicos", "r");
while (fread(&med, sizeof(med), 1, fp))
{
s = med.idMedico;
if (s == r)
{
printf("\nId = %d", med.idMedico);
printf("\nName = %s", med.nomecompleto);
printf("\nType = %s\n", med.especialidade);
}
}
}
fclose(fp);
}
when when i do this i have again
Process returned -1073741819 (0xC0000005) execution time : 14.598 s
Press any key to continue.