【问题标题】:Using getchar() to count spaces, tabs, and newlines使用 getchar() 计算空格、制表符和换行符
【发布时间】:2017-10-10 02:52:50
【问题描述】:

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

输入由!.? 字符终止。

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

这是当前程序:

#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;
}

我很困惑,感谢任何帮助。

【问题讨论】:

  • 请缩进您的代码。就像你的 C 教科书中的例子一样
  • 欢迎来到 Stack Overflow!请正确缩进您的代码。机器(编译器)可以读取和编译任何东西,但是对于人类来说,它需要在将文本块读取为 code 时做出一点sense。提问时,文本区域右侧有一个橙色的大如何格式化框。还有一个完整的格式化辅助工具栏。还有一个 [?] 按钮提供格式化帮助。还有一个预览区域,显示您的帖子发布后的样子。使您的帖子清晰,并证明您花时间这样做,可以提高您获得好答案的机会。

标签: c


【解决方案1】:

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

【讨论】:

  • 似乎完美运行!也感谢您的清晰解释。
猜你喜欢
  • 2011-03-14
  • 2017-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 2017-03-08
  • 2013-01-16
相关资源
最近更新 更多