Olá boa noite, bom meu problema é popular uma struct, estou implementando uma lista simplesmente encadeada, vou colocar trechos do codigo que acho que fica mais fácil de explicar
minha struct
typedef struct listagem{ char prontuario[11]; char nome[150]; char curso[100]; int anoing; int anoform; char end[150]; char fone[15]; char cel[15]; struct listagem * proximo; }Alunos;
este é o meu main
`int main(void){
Alunos * aluno;
Alunos * cadaluno;
aluno = inicializa(aluno);
cadaluno = inicializa(cadaluno);
int i,aux;
printf("Aplicacao para Listagem de Alunos\n\n");
printf("1 - Cadastrar Aluno no Inicio\n");
printf("2 - Cadastrar Aluno no Fim\n");
printf("3 - Excluir aluno\n");
printf("4 - Mostrar aluno\n");
printf("5 - Remover Primeiro aluno Cadastrado\n");
printf("6 - Remover Ultimo aluno Cadastrado\n");
printf("7 - Listar Alunos por Curso\n");
printf("8 - Listar Alunos por Ano de Formatura\n");
printf("9 - Mostrar Todos os Alunos\n");
printf("0 - Sair\n\n");
printf("Digite a Opcao: ");
scanf("%d",&aux);
switch(aux){
case 1:
cadaluno = cadastra(cadaluno);
aluno = insere_topo(aluno,cadaluno);
break;
case 2:break;
case 3:break;
case 4:break;
case 5:break;
case 6:break;
case 7:break;
case 8:break;
case 9:
exibir(aluno);
break;
default:
printf("Tchau...");
exit(1);
break;
}
}`
o meu problema pelo jeito esta nessa funcao aqui
Alunos* cadastra(Alunos*aux){ util(); printf("Digite o Prontuario: "); scanf("%[^\n]",&aux->prontuario); printf("Digite o Nome: "); fgets(aux->nome, 150, stdin); printf("Digite o Curso: "); fgets(aux->prontuario, 11, stdin); printf("Digite o Telefone: "); fgets(aux->fone, 15, stdin); printf("Digite o Celular: "); fgets(aux->cel ,15, stdin); printf("Digite o Endereco: "); fgets(aux->end ,150,stdin); fflush(stdin); printf("Ano de Ingresso: "); scanf("%d",&aux->anoing); printf("Ano de Formatura: "); scanf("%d",&aux->anoform); return aux; }
o prompt lé somente o prontuário, mas quando vai ler o proximo char, ele da erro e fecha, alguém faz idéia do porquê isso acontece?