Как смоделировать EOF?

В настоящее время я читаю книгу K&R и печатаю примеры из первого раздела, и есть пара таких примеров:

while((c = getchar()) != EOF) {
    //do something
}

Я тестирую эти примеры на компьютере с Windows и, таким образом, запускаю скомпилированные исполняемые файлы из приглашения cmd.

Чтобы проверить приведенный выше пример, как мне смоделировать EOF? То есть, в основном, как я могу остановить цикл при тестировании примера из командной строки?


person Andreas Grech    schedule 13.07.2009    source источник


Ответы (5)


Чтобы ввести EOF, используйте:

  1. ^Z (CtrlZ) в Windows
  2. ^D в Unix-подобных системах
person Greg Hewgill    schedule 13.07.2009
comment
Некоторое полезное дополнение: если вы находитесь на непустой строке, вам придется дважды нажать ^D: одно нажатие очистит эту строку, а другое нажатие отправит EOF. Если вы находитесь на пустой строке, достаточно одного ^D. - person Johannes Schaub - litb; 13.07.2009
comment
Это HTML-элемент ‹kbd›. - person Greg Hewgill; 13.07.2009
comment
В Windows ввод ^Z производит EOF только в том случае, если это делается в начале строки. - person M.M; 23.09.2015

Обратитесь к EOF.

Windows: Ctrl+Z
Unix :Ctrl+D
person aJ.    schedule 13.07.2009

Сначала нажмите: Ctrl^X, затем: Ctrl^D

person user3078185    schedule 07.12.2013

Вы также можете имитировать EOF, явно присвоив переменной int значение -1.

Проверьте этот код для большей ясности:

#include<stdio.h>

int main() {    
    // char ch=getchar()
    // int ch=-1;

    if(ch==EOF) { printf("\nEOF: %d",EOF); }
    if((ch!=EOF)==0) { printf("\nit is equal to 0"); }
    if((ch!=EOF)==1) { printf("\nit is equal to 1"); }
    else { printf("\n it is equal to other value"); }
    system("pause");
    return 0;
}
person Community    schedule 22.08.2012
comment
Хм, это может быть значение, отличное от -1. -1 - это только соглашение (или значение для EOF в некоторых ОС) - person Alex; 06.07.2015
comment
Это не отвечает на вопрос. - person ATaco; 03.07.2017

У меня была та же проблема после нажатия Ctrl+d, программа остановилась и вернула 0. Если вы используете Clion, нажмите Ctrl+Shift+a, а затем введите Registry нажмите Enter и убедитесь, что флажок run.processes.with.pty. не установлен. После этого снова скомпилируйте программу и затем вы можете ввести ввод, но не нажимайте Ctrl+d в той же строке, что и ввод, он вернет 0 или ошибку.

person Toffy_    schedule 09.11.2019