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

时间:2017-10-09 17:48:09

标签: c

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

输入以!.?字符终止。

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

这是目前的计划:

#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: %d\n", space);
    printf("Number of new line characters: %d\n", newline);
    printf("Number of tabs: %d\n", tab);

    return 0;
}

我很难过,感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

只需替换|| (或)与&amp;&amp; (和)因为在你的情况下,对于每个字符,三个条件中的两个将始终为真,这就是为什么while循环变为无限。