Pergunta : Por que este programa de C muito simples não trabalha por completo?

Olá! lá, o

I am em OSX e tem a linha de comando compilador do GCC para o C - língua.  Eu sou novo a C e a am conseqüentemente using o livro clássico “o linguagem de programação do ANSI C” por Brian Kernighan e por Dennis Ritchei como uma maneira de aprender a língua.  Há um exercício na primeira parte do livro que eu não posso começ de trabalho, e eu penso que pode ter que fazer com a maneira que eu estou compilando, mas am não sure.  O programa é muito simples.  Pretende-se contar simplesmente a quantidade de caráteres da entrada (neste caso, o exercício usa getchar ().  Está aqui o programa como encontrado no livro: class= " lineNumbers " >
1 do >

#include 

caráteres da contagem de/* na entrada; �a versão *

cano principal ()
{
     nc longo;

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

Depois que eu conservo que o código para fora a uma lima nomeada “characterCount.c” me funciona a linha de comando ferramenta do GCC como assim:

GCC characterCount.c

Compila muito bem, nenhuns erros.  Eu funciono então o executável gerado pelo compilador como assim:

./a.out

O programa espera minha entrada, assim que eu datilografo alguns caráteres, a batida entra, e nada imprime - para fora.  O programa está esperando mais entrada. Porque é isso?!  Não deve a linha de código com o printf começ executada?  Eu sei que este é menor, mas eu quero realmente compreender porque o código não está executando por completo. Há algum interruptor que especial eu tenho que girar sobre ao compilar para lhe fazer o trabalho?  

Pode qualquer um ajudar-me a compreender o que está indo sobre aqui.  Eu estou particular interessado em porque o programa se mantem esperar mais entrada depois que eu incorporo uma linha de caráteres.

Obrigado por seu tempo e ajudá-lo! class= >
de
class= do

Resposta : Por que este programa de C muito simples não trabalha por completo?

tentativa

quando (getchar ()! = “\ n”)

O EOF deve ser CTRL + D que eu supor…
Outras soluções  
 
programming4us programming4us