2017-02-17 2 views
-1
#include <stdio.h> 

int main(){ 
    int c, nl=0; 

    while((c = getchar()) != EOF) 
     if(c=='\n') 
      nl++; 

    printf("%d",nl+1); 
    return 0; 
} 

K & R ansi c, раздел 1.5.3: Программа подсчета строк реплицируется точно в клионе. Я использую Mingw64. На консоли нет выхода, если сравнивать getchar() с EOF. он отлично работает с другими персонажами. Использование CTRL^D выходит из программы с «кодом 0» без вывода на консоль. Я попытался запустить его в bash, но до сих пор нет вывода. Застрял на этом с очень долгого времени.Нет вывода на консоли после ctrl^D?

вход:

некоторые укусы

на нескольких линиях

как ,,,

возможно ..

4 строки.

ожидается выход:

фактический выход:

(ничего) EDIT-1: Я обнаружил, у меня есть эта проблема со всеми программами, которые используйте сравнение EOF. Предполагаются ли эти программы запускаться с консоли или им нужно вводить данные из файлов?

+0

Просьба показать код, ввод и вывод и ожидаемый результат. –

+0

Покажите свои исследования/отладки. Сначала прочитайте страницу [Ask]. –

+0

_Questions ищет помощь для отладки («почему этот код не работает?») Должен включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См.: Как создать минимальный, полный и проверяемый пример. –

ответ

0

В * NIX системах EOF генерируется Ctrl^D, тогда как на системе Windows, EOF генерируется Ctrl^Z. Я предполагаю, что вы используете систему Windows. См. https://en.wikipedia.org/wiki/End-of-file

0

Эти программы предназначены для чтения ввода из файла. так на баш, если вы сделаете это: ./linecount < textfile.txt даст вам выход 5 , но я предполагаю, что в редакторах с помощью ctrl^D для создания/запуска EOF символов не работает (по крайней мере, не на меня)..

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