使用 getchar() 计算空格、制表符和换行符



我目前正在编写一个程序,该程序采用用户输入的句子并计算句子中的空格、制表符和换行符的数量,然后打印值。

输入由!.?字符终止。

我遇到的问题是,当在输入末尾输入上述任何字符时,我的程序似乎没有结束。

这是当前的程序:

#include <stdio.h>
int main(void)
{
    int space = 0, tab = 0, newline = 0;
    int sentence;
    printf("Enter a sentence (end by '.' or '?' or '!'):");
    do{
        sentence = getchar();
        if(sentence == ' '){
            ++space;
        }
        else if(sentence == 't'){
            ++tab;
        }
        else if(sentence == 'n'){
            ++newline;
        }
    }
    while((sentence != '.')||(sentence != '!')||(sentence != '?'));
    printf("Number of space characters: %dn", space);
    printf("Number of new line characters: %dn", newline);
    printf("Number of tabs: %dn", tab);
    return 0;
}

我很困惑,任何帮助都值得赞赏。

只需替换 ||(或)与&&(和),因为在你的情况下,三个条件中的两个对于每个字符总是正确的,这就是为什么while循环到无限的原因。

最新更新