Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera,
Tô fazendo um programa em C que conta quantas vezes cada nota aparece em uma turma. E para encerrar a pessoa tem que entrar com EOF (end of file). Alem de não dar certo o programa imprime 3x um printf que dei.
Ajuda aeh!!
Lá vai o código:
#include <stdio.h>
int main (void){
int nota;
int ac = 0, bc = 0, cc = 0, dc = 0; //contadores das notas a,b,c,d
printf("Digite as notas em letras.\n");
printf("Digite EOF para encerrar.\n");
while((nota = getchar()) != EOF){
switch(nota){
case 'A': case 'a': ++ac; break;
case 'B': case 'b': ++bc; break;
case 'C': case 'c': ++cc; break;
case 'D': case 'd': ++dc; break;
case '\n': case '\t': case ' ': break;
default:
printf("Letra de nota incorreta.\n"); //ta imprimindo 3x essa sequencia de print. PQ?
printf("Digite nova nota");
break;
}
}
printf("A: %d\n", ac);
printf("B: %d\n", bc);
printf("C: %d\n", cc);
printf("D: %d\n", dc);
return 0;
}Mas como encerrá-lo se uso o getchar e amarrei as notas com aquelas q qro, qq outra letra o programa pede para entrar com as notas corretas (esperadas).
Dei uma olhada e o EOF era para retornar o valor -1, mas o programa ta pegando letra por letra( E O F). Já tentei com "", '' e até sem aspas.
Alguem me dá uma dica ae!!
Vlw.
Achei o problema. Para inserir o EOF é só apertar Ctrl d (linux) e Ctrl z(Windows) que ele retorna valor de -1 e encerra o programa. Meu problema estava em usar Eclipse para C, ele não entende isso.
Fazer o q, né?
Vlw
Dzago,
Compilei e executei o seu código. Ele está em loop infinito.
Sua condição de parada do while, sugiro que utilize outra.
Espero ter ajudado, FLW! :grin: