Olá, eu estou com problema na hora de listar os dados de um arquivo usando uma struct dinamico para ler eles,pois não retorna os caracteres inseridos no arquivo em C.
O erro ta marcado no código “void listar_dados()” embaixo
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
void incluir_dados(void);
void listar_dados(void);
struct aluno
{
char nome[30];
int idade;
char sexo[10];
};
struct aluno *a;
main()
{
int op;
while(true)
{
printf("Digite a opcaso desejada: ");
scanf("%d",&op);
switch(op)
{
case 1:
incluir_dados();
break;
case 2:
listar_dados();
break;
case 3:
exit(0);
break;
default:
fflush(stdin);
printf("\nOpcao Invalida\n");
break;
}
}
}
void incluir_dados()
{
a=(struct aluno *)malloc(sizeof(struct aluno));
int i;
FILE *fp;
fp=fopen("APS.txt","w+");
if(fp==NULL)
{
printf("Falha ao abrir o arquivo");
exit(0);
}
for(i=0;i<5;i++)
{
printf("\nDigite o nome do aluno: ");
scanf("%s",&a[i].nome);
printf("\nDigite a idade do aluno: ");
scanf("%d",&a[i].idade);
printf("\nDigite o sexo do aluno: ");
scanf("%s",&a[i].sexo);
fprintf(fp,"%s\n%d\n%s\n",a[i].nome,a[i].idade,a[i].sexo);
}
free(a);
fclose(fp);
}
void listar_dados()
{
a=(struct aluno *)malloc(sizeof(struct aluno));
FILE *fp;
int i=0;
fp=fopen("APS.txt","r+");
if(fp==NULL)
{
printf("Falha ao abrir o arquivo");
}
//ERRO
while(fscanf(fp,"%[^\n]s %[^\n]d %[^\n]s",a[i].nome,a[i].idade,a[i].sexo)!=NULL)
{
printf("%s\n",a[i].nome);
printf("%d\n",a[i].idade);
printf("%s\n",a[i].sexo);
i++;
}
//ERRO
free(a);
fclose(fp);
}