Questione : Perché questo programma in C Molto semplice non funziona completamente?

Ciao là, il

I su OSX ed ha la linea di ordine del GCC compilatore per il linguaggio C.  Sono nuovo alla C ed all'quindi using il libro classico “il linguaggio di programmazione dell'ANSI C„ da Brian Kernighan e da Dennis Ritchei come senso imparare la lingua.  Ci è un'esercitazione nella prima parte del libro che non posso ottenere funzionante e penso che possa riguardare il senso sto compilando, ma l'non sure.  Il programma è molto semplice.  È inteso per contare semplicemente la quantità di caratteri da input (in questo caso, l'esercitazione usa getchar ().  Qui è il programma come trovato nel libro: class= " lineNumbers " >
1 del >

#include 

caratteri di conteggio di/* nell'input; prima versione */

conduttura ()
{
     nc lungo;

    nc = 0;
    mentre (getchar ()! = EOF)
         ++nc;
    printf (“%ld \ n„, nc);
}

Dopo che I a parte il fatto che il codice fuori ad una lima chiamata “characterCount.c„ io fa funzionare la linea di ordine del GCC attrezzo come così:

GCC characterCount.c

Compila benissimo, nessun errori.  Allora faccio funzionare l'eseguibile generato dal compilatore come così:

./a.out

Il programma aspetta il mio input, in modo da scriv alcuni caratteri a macchina, il colpo entra e niente stampa.  Il programma sta prevedendo più input. Perché è quello?!  Non dovrebbe la linea di codice con il printf ottenere eseguita?  So che questo è secondario, ma realmente voglio capire perché il codice non sta eseguendo completamente. È ci un certo interruttore che speciale devo accendere mentre compilo per rendergli il lavoro?  

Può qualcuno aiutarlo a capire che cosa sta accendendo qui.  Sono particolarmente interessato in perché il programma continu aare prevedere più input dopo che fornisco una linea di caratteri.

Grazie per il vostro tempo ed aiutare! class= >
di
class= del

Risposta : Perché questo programma in C Molto semplice non funziona completamente?

prova

mentre (getchar ()! = “\ n„)

Il EOF dovrebbe essere Ctrl + D che indovino…
Altre soluzioni  
 
programming4us programming4us