Como fazer o programa mostrar determinada posição no arquivo , em linguagem C
Ola pessoal tudo bem com vocês..
Minha duvida e no seguinte , eu gravo determinados dados em um arquivo , só que na hora de mostrar o que tem em determinada posição, ele mostra outras coisas alem disso.
EX;
Nome: Maria
idade 19
Em qual posição deseja gravar: posição 3
Nome : João
idade 19
Em qual posição deseja gravar: posição 4
então.. na hora de mostrar o que contem em determinada posição ele mostra mais do que devia , exemplo
qual posição deseja mostrar ? posição 3
em vez de mostrar isso
nome João ; idade 19 ;
ele mostrar
Nome joão ; idade 19 ;
nome ; idade 0 ;
nome ; idade 0 ;
nome ; idade 0 ;
nome Maria ; idade 19 ;
e no caso se pedir para mostrar o que tem na posição 4
ele mostra
nome ; idade 0 ;
nome ; idade 0 ;
nome ; idade 0 ;
nome Maria ; idade 19 ;
onde deveria ser só
nome Maria; idade 19;
o código
struct dados
{
int idade;
char Nome[50];
};
typedef struct dados Dados;
int main()
{
int N,POS,POS1;
Dados D;
FILE* fp = fopen("Arquivo.txt","rb+");
if (fp == NULL)
{
FILE* fp = fopen("Arquivo.txt","wb+");
if (fp == NULL)
{
printf("Erro");
exit(1);
}
}
while(1)
{
printf("MENU\n");
printf("Digite 1 para gravar dados\n");
printf("Digite 2 para mostrar dados\n");
printf("Digite 3 para sair\n");
printf("Opcao: ");
scanf("%d",&N);
printf("\n");
if (N == 0)
{
break;
}
if (N == 1)
{
printf("Entre com um nome: ");
scanf("%s",D.Nome);
printf("\n");
printf("Entre com a idade: ");
scanf("%d",&D.idade);
printf("\n");
printf("Digite a posicao que queira gravar: ");
scanf("%d",&POS);
fseek(fp,POS*sizeof(Dados),SEEK_END);
fwrite(&D,sizeof(Dados),1,fp);
printf("\n");
}
if (N == 2)
{
printf("Digite a posicao que queira mostar: ");
scanf("%d",&POS1);
printf("\n");
fseek(fp,POS1*sizeof(Dados),SEEK_SET);
while (fread(&D,sizeof(Dados),1,fp))
{
printf("Nome: %s ; ",D.Nome);
printf("idade: %d ; ",D.idade);
printf("\n");
}
printf("\n");
}
if (N == 3)
{
break;
}
}
fclose(fp);
return 0;
}Discussão (0)
Carregando comentários...