Problema para Popular uma Struct

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?

Olá @MarceloMTV
Tente ler o prontuário com fgets() e não com scanf().
Ex:
printf("Digite o Prontuario: ");
fgets(aux->prontuario, 11, stdin);
Caso não dê certo tente limpar o buffer do teclado usando um getchar() depois da leitura de cada campo.
Ex:
printf("Digite o Prontuario: ");
fgets(aux->prontuario, 11, stdin);
getchar();

Espero ter ajudado. :v: