Как ввести данные в программу для подсчета введенных символов? - PullRequest
2 голосов
/ 22 июля 2010

Я написал две программы на C для подсчета символов и вывода значения.

Один использует цикл while, а другой - для. При компиляции не сообщается об ошибках, но ничего не печатается.

Вот код, использующий , а :

#include <stdio.h>

/* count characters and input using while */
main()
{
    long nc;

    nc = 0;
    while (getchar() != EOF)
        ++nc;
    printf("%ld\n", nc);
}

А вот код, использующий для :

#include <stdio.h>

/* count characters and input using for */
main()
{
    long nc;

    for (nc = 0; getchar() != EOF; ++nc)
        ;
    printf("%ld\n", nc);
}

И скомпилируйте, и запустите.

Когда я набираю ввод и нажимаю ввод, печатается пустой символ новой строки. Когда я нажимаю клавишу ввода, ничего не вводя, снова печатается пустой символ новой строки. Я думаю, что это должно как минимум напечатать ноль.

Ответы [ 6 ]

5 голосов
/ 22 июля 2010

Вам необходимо прекратить ввод в вашу программу (т. Е. Запустить тест EOF).

Это можно сделать на большинстве терминалов Unix с помощью Ctrl-D или Ctrl-Z в начале новой строки набольшинство команд Windows.

Также вы можете перенаправить стандартный ввод из файла, например:

myprogram < test.txt

Также вы должны указать main тип возвращаемого значения;неявный int устарел.

int main(void)
1 голос
/ 02 июля 2012

для вашей программы для правильной работы.после того, как вы нажмете клавишу enter , вы должны убедиться, что вы завершаете цикл, чтобы программа корректно всплывала.это можно сделать, набрав ctrl + Z на клавиатуре.это ключи, которые соответствуют EOF.

1 голос
/ 22 июля 2010

Вы ждете здесь символа EOF (конец файла).Это произойдет только в двух сценариях:

  • Пользователь нажимает Ctrl + Break (здесь, похоже, работает на Windows, но я бы не стал на это рассчитывать).

  • Пользователь вводит символ EOF (можно сделать, например, с помощью Ctrl + Z).

Лучший способ сделать это - вместо этого проверить наличие новой строки.

1 голос
/ 22 июля 2010

Ваши программы будут выводиться только после просмотра конца файла (EOF). Создайте это в UNIX с помощью CTRL-D или в Windows с помощью CTRL-Z.

0 голосов
/ 22 июля 2010

Вы понимаете, что символ новой строки - это обычный символ, а не индикатор EOF? EOF будет Ctrl-D или Ctrl-Z в большинстве популярных ОС.

0 голосов
/ 22 июля 2010

Нажатие клавиши Enter на клавиатуре добавляет символ \n к вашему вводу.Для того, чтобы и программа распечатала количество символов, вам необходимо добавить символ «Конец файла» (EOF).

Чтобы ввести символ EOF, необходимо нажать CTRL-D в Unix или CTRL-Z в Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...