U
26 июня 2020 г. 21:51

простенький код Си

Здравствуйте, только начинаю изучать программирование.
В книге Брайана Кенингена есть простенький пример по подсчету строк

include

main(){
int с, nl;
nl= 0;
while((с = getchar()) != EOF)
if(c== '\n')
++nl;
printf("%d\n", nl);}
но в итоге он просто запрашивает новую строчку без вывода нужных данных. подскажите где ошибка?

2

Вам это нравится? Поделитесь в социальных сетях!

2
Evgenii Legotckoi
  • 29 июня 2020 г. 1:40
  • (ред.)
  • Ответ был помечен как решение.

Добрый день.

Вот это место кода

  1. while((с = getchar()) != EOF)

Означает, что ввод ждёт окончание файла. EOF - end of file. В зависимости от платформы и внутренней реализации стандартных библиотек - этот макрос может иметь разные значения. В GNU C Library это значение -1.

Я лет 6 назад сам читал эту книгу, не полностью её прочитал. Но это пример показался мне несколько некорректным в силу того, что в качестве ввода нужно по хорошему передавать содержимое файла, а не ввод с консоли. В обычных условиях передать символ окончания файла набором с клавиатуры вряд ли получится.

Так что у вас ошибки нет, просто пример некорректный для повторения. В той книге есть несколько ляпов в программном коде.

    U
    • 29 июня 2020 г. 22:53

    Большое вам спасибо!!

      Комментарии

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