Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde.
estou precisando muito de ajuda, estou desenvolvendo um trabalho de faculdade que utiliza vetor e estruturas para criar um arquivo, ele se baseia em um pequeno cadastro, consigo cadastrar vários registros de uma vez e caso eu mande listar todos que eu cadastrei na mesma vez(sem fechar o programa) ele lista corretamente, porém se eu abrir o programa e pedir que ele liste logo de cara ele só em volta o primeiro registro, será que alguém teria a solução para ele mostrar todos os registros ao invés de só o primeiro?
Segue meu código:
#include<stdio.h>
#include<stdlib.h>
struct estrutura
{
char nome[30];
char end[20];
char cidade[20];
char estado[20];
char cep[10];
};if((p = fopen("arq3.doc","w"))==NULL)
{
printf("erro na abertura do arquivo \n");
exit(0);
}
system("cls");
printf("Entre com o nome:");printf("\n");
printf("Entre com o Endereço: ");
fflush(stdin);printf("\n");
printf("Entre com a cidade: ");
fflush(stdin);
scanf("%[^\n]",&dados[a].cidade);
printf("\n");
printf("Entre com o estado: ");
fflush(stdin);
scanf("%[^\n]",&dados[a].estado);
printf("\n");
printf("Entre com o CEP: ");
fflush(stdin);
scanf("%[^\n]",&dados[a].cep);
printf("\n\n\n");
for(i=0; i<a; i++) // for para gravação no arquivo, ele vai executar toda vez que a função for chamada e vai jogar de 0 até o indice corrente de a que no começo tbm é zero
{
fwrite(dados[i].nome,30,1,p);
fwrite(dados[i].end,20,1,p);
fwrite(dados[i].cidade,20,1,p);
fwrite(dados[i].estado,20,1,p);
fwrite(dados[i].cep,20,1,p);
}
system("pause");
} printf("erro na abertura do arquivo \n");
exit(0);
}
printf("Dados do arquivo \n\n\n");fread(&dados[i].nome,30,1,p);
fread(&dados[i].end,20,1,p);
fread(&dados[i].cidade,20,1,p);
fread(&dados[i].estado,20,1,p);
fread(&dados[i].cep,20,1,p);
printf("Nome: %s",dados[i].nome);
printf("\n\n");
printf("End: %s",dados[i].end);
printf("\n\n");
printf("Cidade: %s",dados[i].cidade);
printf("\n\n");
printf("Estado: %s",dados[i].estado);
printf("\n\n");
printf("CEP: %s",dados[i].cep);
printf("\n\n");
}
getchar();
getchar();
}
main()
{
int op=1;
while (op!=0)
{
system("cls");
printf(" Ecolha uma opcao ! \n\n");
printf("1-Gravar arquivos.\n");
printf("2- Ler arquivos. \n");
printf("0- Sair. \n");
printf("\n\n");
scanf("%d", &op);
printf("\n\n");
switch(op)
{
case 1:
{
cad_arq();
a=a+1; // depois que você adcionou um registro já coloca o indice da matriz no próximo
break;
}
case 2:
{
le_arq();
break;
}
case 0:
{
printf("fim de programa, obrigado \n");
break;
}
default:
{
printf("opcao incorreta");
break;
}
}
}
fclose(p);
system("pause");
}Carregando comentários...