I am a beginner in programming, and I have a job to deliver to college. In it I have to make customer records using files, and then do a search on the file and print on the screen the data of the registered customer. However, I am not able to perform the search (fourth block of ERROR ):
//estrutura >1<
typedef struct FUNCIONARIO
{
char nome_fun[45];
char tel_fun[15];
char funcao[45];
char sal_fun[10];
char tipo_fun[15];
int cod_fun;
}FUNCIONARIO;
// Chamada da funcao de cadastro do funcionario >2<
FUNCIONARIO funcionario;
FILE * arq;
if((arq = fopen("CadastroFuncionarios.txt", "a"))==NULL) exit(1);
funcionario = cadastro_funcionario();
if (fwrite(&funcionario, sizeof(FUNCIONARIO), 1, arq)!=1) break;
fflush(arq);
fseek(arq, 0, 0);
fclose(arq);
// funcao de cadastro do funcionario >3<
FUNCIONARIO cadastro_funcionario()
{
FUNCIONARIO funcionario;
FILE *arq;
arq = fopen("CadastroFuncionarios.txt", "r");
int cont;
fseek(arq, 0, 2);
cont = ftell(arq)/sizeof(FUNCIONARIO);
fclose(arq);
// gera cod_funcionario automatico
system ("cls");
printf("*********CADASTRO DE FUNCIONARIO**********");
printf ("\n\nPreencha os dados para cadastro do Funcionario:");
funcionario.cod_fun = cont;
fprintf(arq, "%d", funcionario.cod_fun);
fprintf(arq, "|");
printf ("\nNOME: ");
setbuf(stdin, NULL);
gets (funcionario.nome_fun);
fputs(funcionario.nome_fun, arq);
fputs("|",arq);
printf ("TELEFONE: ");
setbuf(stdin, NULL);
gets (funcionario.tel_fun);
fputs(funcionario.tel_fun, arq);
fputs("|",arq);
printf ("FUNCAO: ");
setbuf(stdin, NULL);
gets (funcionario.funcao);
fputs(funcionario.funcao, arq);
fputs("|",arq);
printf ("SALARIO: ");
setbuf(stdin, NULL);
gets (funcionario.sal_fun);
fputs(funcionario.sal_fun, arq);
fputs("|",arq);
printf ("TIPO (Temporario ou Fixo): ");
setbuf(stdin, NULL);
gets (funcionario.tipo_fun);
fputs(funcionario.tipo_fun, arq);
fputs("|",arq);
fputs("\n", arq);
system("cls");
rewind(stdin);
return funcionario;
}
// pesquisa de funcionario - **ERRO** >4<
FUNCIONARIO funcionario; // struct utilizada para o cadastro e impressao na tela
FILE * arq;
if ((arq = fopen("CadastroFuncionarios.txt", "r"))==NULL) exit(1);
char array[1000], nome[30];
int i;
long nrec;
printf ("\n");
printf("**********FUNCIONARIOS CADASTRADOS**********\n\n");
printf ("Informe o nome do Funcionario: ");
setbuf(stdin, NULL);
scanf ("%s", &nome);
fscanf (arq, "%s", array);
nrec = ftell(arq)/sizeof(FUNCIONARIO);
for(i=0; i<nrec; i++)
{
if(strstr(array, nome)!=NULL)
{
pesquisa_funcionario(funcionario); // funcao para impressao na tela
break;
}
else
{
printf ("Funcionario nao cadastrado!");
}
}
fclose(arq);
break;
// funcao para impressao dos dados >5<
void pesquisa_funcionario (FUNCIONARIO funcionario)
{
printf ("Codigo: %d | ", funcionario.cod_fun);
printf ("Nome: %s | ", funcionario.nome_fun);
printf ("Telefone: %s | ", funcionario.tel_fun);
printf ("Funcao: %s | ", funcionario.funcao);
printf ("Salario: %s | ", funcionario.sal_fun);
printf ("Tipo: %s | ", funcionario.tipo_fun);
printf ("\n");
}
I understand that without posting the complete code, it is not possible to execute, but I think it is too long to put here.