C 开关-如何检查空白?
我有以下代码:C 开关-如何检查空白?,c,C,我有以下代码: #include <stdio.h> #define WHITE_SPACE 0 #define NOT_WHITE_SPACE 1 void main() { char c; int code; printf("Please give a character: "); scanf("%c", &c); if (c== " " || c== "\n" || c== "\t") code
#include <stdio.h>
#define WHITE_SPACE 0
#define NOT_WHITE_SPACE 1
void main() {
char c;
int code;
printf("Please give a character: ");
scanf("%c", &c);
if (c== " " || c== "\n" || c== "\t")
code = WHITE_SPACE;
else:
code = NOT_WHITE_SPACE;
}
printf("%d\n", code);
}
#包括
#定义空白0
#定义非白色空间1
void main(){
字符c;
int代码;
printf(“请输入一个字符:”);
scanf(“%c”、&c);
如果(c==”|| c==“\n”| c==“\t”)
代码=空白;
其他:
代码=非白色空间;
}
printf(“%d\n”,代码);
}
我想将if-else
语句转换为switch
当我尝试
case”“
或case”\n“
或case”\t“
时,我得到的错误案例标签不会减少为整数常量。您知道如何解决这个问题吗?首先,您发布的原始代码无法工作,它不是有效的C
switch
语句只对整数起作用,因此必须使用适当的字符常量,如'
。而不是字符串文本。例如:
switch(ch)
{
case ' ':
case '\n':
case '\t':
puts("whitespace");
break;
default:
puts("not whitespace");
}
也就是说,没有必要手动推出这样的东西#包含
,然后调用函数isspace
。首先,您发布的原始代码无法工作,它是无效的
switch
语句只对整数起作用,因此必须使用适当的字符常量,如'
。而不是字符串文本。例如:
switch(ch)
{
case ' ':
case '\n':
case '\t':
puts("whitespace");
break;
default:
puts("not whitespace");
}
也就是说,没有必要手动推出这样的东西#包含
,然后调用函数isspace
。像这样的文本字符串“
实际上是一个(只读)字符数组。与其他数组一样,它衰减为指向其第一个元素的指针。这意味着c==”
将把c
中的字符与指向“
的第一个字符的指针进行比较
要获取文字字符,请使用单引号,如'
:
if (c== ' ' || c== '\n' || c== '\t')
现在,当您知道如何使用文字字符时,您可以在开关
中为大小写
标签使用文字字符
但当然,不要重新发明轮子,而是使用标准功能:
if (isspace(c))
像“
这样的文字字符串实际上是一个(只读)字符数组。与其他数组一样,它衰减为指向其第一个元素的指针。这意味着c==”
将把c
中的字符与指向“
的第一个字符的指针进行比较
要获取文字字符,请使用单引号,如'
:
if (c== ' ' || c== '\n' || c== '\t')
现在,当您知道如何使用文字字符时,您可以在开关
中为大小写
标签使用文字字符
但当然,不要重新发明轮子,而是使用标准功能:
if (isspace(c))
以“双引号”中的任何内容开头不是字符,因此c==“”无效以“双引号”中的任何内容开头不是字符,因此c==“”无效