Ir ao conteúdo
  • Cadastre-se
DC2010

Preciso Ajuda (linguagem C)

Recommended Posts

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"); }

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×