#include <stdio.h>
int main(void)
{
int c, blank, tab, lines;
int till = 0;
blank = tab = lines = 0;
while(till == 0)
{
c = getchar();
switch(c)
{
case ' ' :
blank++;
case '\t' :
tab++;
case '\n' :
lines++;
case 'EOF' : /* warning: multi-character character constant [-Wmultichar] */
till = 1;
}
}
printf("Blanks :%d Tab :%d Lines :%d\n", blank, tab, lines);
return 0;
}
在编译此代码时,它仍然存在此错误:
警告:多字符字符常量[-Wmultichar]
我们如何在switch
中使用EOF?
答案 0 :(得分:10)
你在EOF案件中有一个小错误 - 你需要改变:
case 'EOF':
为:
case EOF:
在更改之后,代码应该编译并运行,但为了使其正确运行,您需要在每个案例的末尾添加break;
行。
答案 1 :(得分:2)
变化:
case 'EOF':
为:
case EOF:
在每个案例后添加break;
。
答案 2 :(得分:2)
试试这个:
#include <stdio.h>
int main(void)
{
int c, blank, tab, lines;
int till = 0;
blank = tab = lines = 0;
while(till == 0)
{
c = getchar();
switch(c)
{
case ' ' :
blank++;
break;
case '\t' :
tab++;
break;
case '\n' :
lines++;
break;
case EOF :
till = 1;
break;
}
}
printf("Blanks :%d Tab :%d Lines :%d\n", blank, tab, lines);
return 0;
}
答案 3 :(得分:1)
您正在使用'EOF'来表示文件结尾。实际表示是EOF常数
case EOF : /* warning: multi-character character constant [-Wmultichar] */
till = 1;
}
在stdio.h中定义
答案 4 :(得分:1)
您还可以执行以下操作:
while ((c = getchar()) != EOF)
{
switch (c)
{
/* case ' ', '\t', '\n' */
}
}
EOF
是类型int
的宏定义。
答案 5 :(得分:0)
没有字符符号'EOF'
。在标准C库中,EOF
是预定义的常量。它的价值因系统而异。因此,在您的情况下,您应该将EOF
比较部分更改为以下内容:
...
case EOF:
till = 1;
}