boas; precisava da vossa ajuda aqui num programa que fiz; Alguem me sabe dizer porque é que quando no menu faço a opção nº1 (adicionar novo aluno) o programa apenas mostra os printf's e salta os fscanf's. alguem me sabe dizer o porque ?
#include<stdio.h>#define MAX 2main(){ FILE *ficheiro; typedef struct dados{ int numero; char nome[20]; int idade; int curso; }dados; struct dados alunos[MAX]; int esc, i, esc2; char nome1[20]; float media=0; ficheiro = fopen("dados.txt", "a"); do{ printf("1)Inserir um novo aluno \n2)Apresentar uma lista so com os alunos do CET TR \n3)Apresentar uma lista so com os alunos do CET IEAI \n4)Calcular a media de todos os alunos \n5)Terminar programa\n"); scanf("%d",&esc); if(esc==1){ for(i=0;i<MAX;i++){ system("CLS"); printf("insira o numero do aluno %d: ",i+1); fscanf(ficheiro,"%d",&alunos[i].numero); printf("insira o nome do aluno: "); fscanf(ficheiro,"%[^\n]",&alunos[i].nome); printf("insira a idade do aluno: "); fscanf(ficheiro,"%d",alunos[i].idade); printf("insira o numero do curso do aluno (1-CET-TR; 2- CET-IEAI): "); fscanf(ficheiro,"%d",alunos[i].curso); } } else if(esc==2){ system("CLS"); for(i=0;i<MAX;i++){ if(alunos[i].curso == 1) printf("numero do aluno: %d\n",alunos[i].numero); } } else if(esc==3){ system("CLS"); for(i=0;i<MAX;i++){ if(alunos[i].curso == 2) printf("numero do aluno: %d\n",alunos[i].numero); } } else if(esc==4){ system("CLS"); for(i=0;i<MAX;i++){ media=media + alunos[i].idade; media=media/MAX; } printf("A media da idade dos alunos é: %d\n",media); } else if(esc==5) break; printf("insira 1 para voltar ao inicio ou 2 para sair: "); scanf("%d",&esc2); system("CLS"); }while(esc2==1); fclose(ficheiro); system("PAUSE"); }