Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 开关-如何检查空白?_C - Fatal编程技术网

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==“”无效