PDA

View Full Version : [C] Problema con getchar


Downlosc
14-10-2014, 18:43
salve ho un piccolo problema con questo pezzo di codice:
qualcuno sa spiegarmi perchè questo while mi cicla all'infinito? se non è così...perchè non stampa? :D grazie in anticipo a chiunque abbia voglia di aiutarmi :muro:
#include <stdio.h>

int main(int argc, const char * argv[]) {


int nl = 0;
int ns = 0;
int nt = 0;
int c = 0;


while ((c = getchar()) != EOF){
if (c == ' ') {
ns++;
}
if (c == '\t') {
nt++;
}
if (c == '\n') {
nl++;
}

}

printf("%d %d %d", ns, nt, nl);

return 0;
}

biowep
14-10-2014, 20:07
A me sembra tutto a posto. Per inserire EOF in Windows fai Ctrl+Z.
Se invece vuoi inserire testo normalmente da tastiera non è quello il modo migliore. Io userei fgets().

gianmpu
16-10-2014, 16:46
Dando un'occhiata molto veloce, con le parentesi che hai messo, confronti il risultato dell'assegnamento di un valore a c con EOF e i due sono sempre diversi.
Forse è meglio usare un ciclo do while del tipo
do
leggi carattere
fai qualcosa
while (carattere != carattere che indica l'uscita)

gianmpu
17-10-2014, 09:18
l'espressione di assegnamento ritorna il valore assegnato...
Hai ragione, leggere troppo velocemente le cose fa fare errori :D