【发布时间】:2020-07-27 04:16:01
【问题描述】:
这是练习:
编写一个程序,每行打印一个单词。
我对这个练习的解决方案如下:
main() {
int c;
while((c = getchar()) != EOF) {
if(c == ' ' || c == '\t' )
putchar('\n');
else
putchar(c);
}
}
}
据此link 这是一个糟糕的解决方案,但我不确定我明白为什么。
如果能帮助我理解这一点,我将不胜感激。
【问题讨论】:
-
也许是因为问题要求您一次打印一个单词,但您一次打印一个字符?一个词通常由多个字符组成。
-
除了前面的评论,考虑一下当你输入
a b c时会发生什么。或者,正如链接中的一个 cmets 所说,使用您自己的 .c 源文件作为输入运行它。 -
多个前导、包含或尾随空格会导致输出中出现空白行。解决方案是添加一个简单的标志来跟踪您是(1)在一个单词中读取字符还是(2)在读取空白的单词之间,并且仅在您从读取字符转换为空白时输出您的
'\n'。一个计数单词的示例(适用于此)Local variables and memory in c
标签: c input character whitespace