Ir ao conteúdo
  • Cadastre-se

Preciso Ajuda (linguagem C)


DC2010

Posts recomendados

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"); }
Link para o comentário
Compartilhar em outros sites

Isso está acontecendo porque você inverteu. Se você quer gravar as entradas do usuario em arquivo você deve usar o fprintf() e nao o fscanf():

#include<stdio.h>#include<stdlib.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);	   scanf("%d",&alunos[i].numero);       fprintf(ficheiro,"%d ",&alunos[i].numero);              fflush(stdin);       printf("insira o nome do aluno: ");	   fgets(alunos[i].nome,20,stdin);       fprintf(ficheiro,"%s",alunos[i].nome);              printf("insira a idade do aluno: ");	   scanf("%d",&alunos[i].idade);       fprintf(ficheiro,"%d ",alunos[i].idade);              printf("insira o numero do curso do aluno (1-CET-TR; 2- CET-IEAI): ");	   scanf("%d",&alunos[i].curso);       fprintf(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"); }

Espero ter ajudado

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...