При использовании команды fgetl для получения строки с клавиатуры, после ввода ввода необходимо дважды нажать клавишу «Ввод». - PullRequest
1 голос
/ 27 февраля 2020

При использовании команды fgetl для получения строки с клавиатуры, после ввода ввода необходимо дважды нажать клавишу «Ввод». Почему это так?

Код показан ниже

printf("Enter your name : ");
name = fgetl(stdin);
printf("Your Name  is %s\n", name)

1 Ответ

1 голос
/ 27 февраля 2020

Если бы мне пришлось угадывать, это побочный эффект того факта, что fgetl ожидает «правильный» файл. Он не предназначен для интерактивного использования.

Как таковой, он пытается выяснить, является ли следующая строка концом файла или пустой строкой, для соответствующей обработки предыдущей новой строки. (Вы можете себе представить, например, если файл запускается с символом EOF перед новой строкой, это должно быть обработано специально). Или это может даже касаться попыток надлежащим образом справиться с ограничителями строки между операционными системами ...

В любом случае, если вам нужен именно интерактивный ввод, вам, вероятно, следует просто использовать команду input вместо этого.

...