2016-08-16 2 views
0

Я читаю книгу, и я следовал небольшой программе в книге, есть небольшая программа подсчета, в которой у меня не могут быть результаты.Хотя петлевые ошибки в C

#include <stdio.h>  

int main() { 

    long nc; 

    nc = 0; 
    while(getchar() != EOF) 
     ++nc; 
    printf("%ld\n", nc); 
} 

Когда я запускаю это и введите несколько символов, нет никакого результата, и программа по-прежнему выполняется, я не могу ввести символы, но до сих пор никакого результата. В коде есть что-то неправильное?

И я запускаю его в Xcode.

+1

У вас есть '#include ' в начале программы? – Barmar

+3

Как вы сообщаете программе, что данных больше нет? Вы должны ввести Control-D в Unix-подобных системах или Control-Z в Windows, в начале строки, чтобы указать, что данных больше нет. Или, если у вас есть файл, например 'charcount.c', и ваша программа' charcount', вы можете использовать 'charcount

+0

Если вы правильно отформатировали код, вам не придется спрашивать. – Olaf

ответ

1

код нормально, если у вас есть необходимые заголовочные файлы включены:

#include <stdio.h> 

Для выхода из цикла WHILE, вы должны послать «EOF» в программе.

В этом случае вы можете обратиться к What is EOF in the C programming language?.

В системах Linux и OS X символом ввода для создания EOF является Ctrl-D. Для Windows это Ctrl-Z.

+1

Что такое код, используемый с ''? –

+0

Да, ты прав. не является обязательным файлом заголовка для этого случая. – CWLiu

1

Прежде всего, если вы забыли, вам нужно включить заголовочный файл stdio.h, а во-вторых, нет ничего плохого в кодах.

while(getchar() != EOF) 
    ++nc 

строки кода выше проверяет конец файла и если он возвращает ложь, он увеличивает пс и его только тогда, когда цикл в то время как встречает конец файла перед печатью пс. Конец файла в linux - это Ctrl + D, поэтому после ввода ваших символов введите Ctrl + D, и у вас будет счет, так как это конец файла или введите ввод.

+0

Вы также можете использовать Ctrl + Z как конец файла (EOF) для окон. – d3r1ck

+0

Программа нуждается в stdio.h для печати nc, в случае, если кто-то спрашивает, почему stdio.h – d3r1ck

Смежные вопросы