Почему fgets читает ввод, даже если во входной строке есть EOF? - PullRequest
0 голосов
/ 08 октября 2019

Я прочитал man страницу fgets(). В нем говорится «Чтение прекращается после EOF или новой строки». Мой код выглядит следующим образом.

#include <stdio.h> 
#define MAX 50 
int main() 
{ 
    char buf[MAX]; 
    fgets(buf, MAX, stdin); 
    printf("string is: %s\n", buf); 

    return 0; 
} 

Я дал этот ввод: Добро пожаловать в -1 kkWorld.
Вывод: строка: Добро пожаловать в -1 kkWorld
fgets должен прекратить чтение, когдаон видит -1 на входе. Почему fgets читает, хотя в строке есть -1 или EOF? Я что-то здесь упускаю? Пожалуйста, помогите.

1 Ответ

1 голос
/ 08 октября 2019

Как сказал Адриан, ввод "-1" заканчивается двумя символами;'-' и '1'. Чтобы эмулировать символ EOF, необходимо ввести одну константу значения EOF.

EOF можно ввести в программу с помощью Ctrl-D (Unix / Linux) или CTRL-Z (Microsoft).

...