Подсчитайте количество пробелов, пробелов и табуляции в C

Я работаю над упражнениями K&R прямо сейчас, и я нахожусь в том, где вы считаете количество пробелов, пробелов и табуляции, используя язык C. Я построил следующий код:

#include <stdio.h>
#include <stdlib.h>

/*Write a program that counts blanks, tabs, and newlines*/

int main()
{
    int c, numblanks, numtabs, numnewlines;

    numblanks = 0;
    numtabs = 0;
    numnewlines = 0;

    printf("Enter some text and press \"Enter\"\n");

    while ((c = getchar()) != EOF) {
        if (c == ' ')
            ++numblanks;
        if (c == '\t')
            ++numtabs;
        if (c == '\n')
            ++numnewlines;
    }

    printf("The total number of blanks is %i\n", numblanks);
    printf("The total number of tabs is %i\n", numtabs);
    printf("The total number of new lines is %i\n", numnewlines);
}

Я использую Codeblocks и встроенный компилятор GCC, который устанавливается вместе с ним в ОС Windows 10. Когда я запускаю программу, я набираю какой-то текст в всплывающем окне программы и нажимаю «Enter», и ничего не происходит. Я не уверен, почему. Мне было интересно, может ли кто-нибудь помочь мне еще раз взглянуть на мой код, чтобы увидеть, есть ли что-то, что мне не хватает. Вот изображение того, что происходит в программе, когда я ее запускаю:

Окно программы с напечатанным текстом, но без реакции


person Derek ZhongXuan Kwok    schedule 28.11.2017    source источник
comment
Оооо, это то, что я искал, просто не совсем знал, как это правильно сказать (т.е. нуб здесь... ха-ха). Спасибо, приятель! Ctrl + Z сделал свое дело!   -  person Derek ZhongXuan Kwok    schedule 28.11.2017
comment
Также помните о CTRL+Z не создает EOF в Windows 10, если у вас не установлен правильный флажок.   -  person David C. Rankin    schedule 28.11.2017


Ответы (1)


Я не пробовал ваше решение, но иногда это может произойти, когда программа завершена, терминал закрывается. Попробуйте поставить getchar в конце вашей программы.

printf("Enter key to exit");
getchar();

Это может помочь после ввода строки (но иногда требуется создание цикла с getchar() и проверка результата этой функции)

person perz    schedule 28.11.2017