【发布时间】:2017-10-24 04:10:34
【问题描述】:
我搜索但没有找到解决方案。 该程序应该计算制表符、换行符和空格。
#include <stdio.h>
int main(void)
{
int c,nl,tab,blank;
tab = 0;
blank = 0;
nl = 0;
while((c = getchar()) != EOF)
{
if(c == '\n');
nl++;
if(c == '\t');
tab++;
if(c == ' ');
blank++;
}
printf("newline: %d tab: %d blank: %d\n", nl,tab,blank);
return 0;
}
当我在 FreeBSD 上使用 ctrl-d 来发出 EOF 信号时,每个变量都以相同的值显示。如果我输入 "helloblank 如何tabareenter你enterctrl-d " 它将换行显示为 18,标签显示为 18,空白显示为 18。
我的代码错了吗?明明是这样,但怎么了?
【问题讨论】:
-
去掉 if 语句末尾的分号,例如
if(c == '\n');->if(c == '\n')。 (另外,这不是一个错误,但要学会正确地格式化你的代码。) -
谢谢,我的格式错误。 @PaulR
-
如果使用gcc或者clang,用
-Wall警告标志编译会发现这个问题 -
@MM 可以。谢谢。
标签: c command-line freebsd cc