【发布时间】:2011-03-14 08:34:26
【问题描述】:
这个问题来自 K&R p。 20:编写一个程序来计算空格、制表符和换行符。
这是我的尝试:
#include <stdio.h>
int main()
{
int character, whitespace = 0;
printf("Enter some text, and press Ctrl-d when you're done.\n\n");
while((character = getchar() != EOF) {
if(character == (' ' || '\n' || '\t')) {
++whitespace;
}
}
printf("\nYour text contains %d spaces, tabs, and lines.\n", whitespace);
return 0;
}
程序不工作。无论用户文本包含多少空格、制表符和换行符,它总是给出答案 0。任何人都可以看到问题吗?还有一件奇怪的事情:我必须按两次 Ctrl-d 才能注册。我不知道为什么。 谢谢!
【问题讨论】:
-
您的
while语句缺少右括号;这可能是一个复制和粘贴错误,因为您说程序编译并运行。确保程序中缺少的右括号在getchar()之后而不是EOF之后;否则你会得到不正确的结果。 -
您可能必须按两次
Ctrl-d,因为您在输入后没有按回车键。 shell 会缓冲你的输入,直到它看到换行符。
标签: c whitespace