Подсчет вводимых символов - C (СИ) (70422)

Узнай цену своей работы

Формулировка задачи:

Добрый день! решил приобщиться к прекрасному и в качестве старта выбрал книгу: "Язык программирования Си Брайан Керниган, Деннис Ритчи 3-е издание". пишу в консольке на mint17 есть в ней вот такой пример:
#include <stdio.h>
// подсчет вводимых символов. v1.0
main()
{
        long nc;
        nc = 0;
        while (getchar() != EOF) 
                ++nc;
        printf ("%ld\n", nc);
}
однако, окончание ввода и нажатие Enter не вызывают EOF. т.е. программа не выходит из цикла. если код

printf ("%ld\n", nc);

поместить внутрь цикла - то он продолжает увеличивать nc после каждого последующего ввода символов + enter в книжке написано вот так:
Существует проблема: как отличить конец ввода от обычных читаемых данных. Решение заключается в том, чтобы функция getchar по исчерпании входного потока выдавала в качестве результата такое значение, которое нельзя было бы спутать ни с одним реальным символом. Это значение есть EOF (аббревиатура от end of file — конец файла). Мы должны объявить переменную с такого типа, чтобы его "хватило" для представления всех возможных результатов, выдаваемых функцией getchar. Нам не подходит тип char, так как c должна быть достаточно "емкой", чтобы помимо любого значения типа char быть в состоянии хранить и EOF. Вот почему мы используем int, а не char. EOF — целая константа, определенная в <stdio.h>. Какое значение имеет эта константа — неважно, лишь бы оно отличалось от любого из возможных значений типа char. Использование именованной константы с унифицированным именем гарантирует, что программа не будет зависеть от конкретного числового значения, которое, возможно, в других Си-системах будет иным.
я что-то делаю не так или есть другая причина такого поведения кода?

Решение задачи: «Подсчет вводимых символов»

textual
Листинг программы
   while ((с=getchar()) != EOF) 
                ++nc;
        printf ("%d\n", c);

Объяснение кода листинга программы

В этом коде:

  1. nc объявляется как переменная для подсчета количества введенных символов.
  2. Ввод данных осуществляется с помощью функции getchar(), которая возвращает следующий символ из стандартного ввода.
  3. Цикл while продолжается до тех пор, пока getchar() не вернет EOF (конец файла), что обычно происходит, когда пользователь вводит конец строки или завершает ввод.
  4. Внутри цикла значение nc увеличивается на 1.
  5. После окончания цикла, количество введенных символов, представленное переменной nc, выводится на экран с помощью функции printf().
  6. Форматированная строка, которую выводит printf(), включает номер символа в формате %d\n. В общем, этот код подсчитывает количество введенных символов, а затем выводит их количество.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5
Похожие ответы