使用 char[2] 的 C 切换大小写
C switch case using char[2]
我正在尝试在 C 中将 switch case 与 char[2] 一起使用,但它只支持整数。
int main() {
char c[2] = "h";
switch (c) {
case "h":
printf("done!");
}
return 1;
}
为了更好地理解,我想做的是:
if "h" in ")($+#&@+)#"
基本上我想做一个条件来匹配一个字符和一组字符,但效率很高,首先想到的是使用 switch case 但它只支持诠释。但是当我使用其他 Whosebug 答案中推荐的 (int)c
时,它不会 return ascii 值。
在这种情况下使用 switch 语句没有任何意义。
只需使用 <string.h>
中声明的标准函数 strchr
。
#include <string.h>
//...
if ( strchr( c, 'h' ) != NULL ) puts( "done!" );
您不能直接使用 switch 语句比较字符(字符串)数组,因为 switch 语句仅适用于基本类型;不是基本类型的数组。
使用 (int)c
不返回 ASCII 值的原因是因为您正在转换 char[]
->int
而不是 char
->int
.
单引号和双引号的区别在C:
中很重要
'h'
属于 char
类型,等于 104
(ASCII 中的小写 'h')
"h"
是 const char*
类型,指向 2 个字符:h
,& 空终止字符 [=22=]
要检查字符串中是否存在某个字符,您可以使用 strchr
function as mentioned in ,或者如果您想使用 switch 语句自行完成,您可以试试这个:
int main()
{
char c[2] = "h";
bool found = false;
for (int i = 0; i < 2; ++i) {
switch (c[i]) {
case 'h': // compare c[i] == 'h'
found = true;
break;
default:
break;
}
}
if (found)
printf("Done!");
return 0;
}
我正在尝试在 C 中将 switch case 与 char[2] 一起使用,但它只支持整数。
int main() {
char c[2] = "h";
switch (c) {
case "h":
printf("done!");
}
return 1;
}
为了更好地理解,我想做的是:
if "h" in ")($+#&@+)#"
基本上我想做一个条件来匹配一个字符和一组字符,但效率很高,首先想到的是使用 switch case 但它只支持诠释。但是当我使用其他 Whosebug 答案中推荐的 (int)c
时,它不会 return ascii 值。
在这种情况下使用 switch 语句没有任何意义。
只需使用 <string.h>
中声明的标准函数 strchr
。
#include <string.h>
//...
if ( strchr( c, 'h' ) != NULL ) puts( "done!" );
您不能直接使用 switch 语句比较字符(字符串)数组,因为 switch 语句仅适用于基本类型;不是基本类型的数组。
使用 (int)c
不返回 ASCII 值的原因是因为您正在转换 char[]
->int
而不是 char
->int
.
单引号和双引号的区别在C:
中很重要'h'
属于char
类型,等于104
(ASCII 中的小写 'h')"h"
是const char*
类型,指向 2 个字符:h
,& 空终止字符[=22=]
要检查字符串中是否存在某个字符,您可以使用 strchr
function as mentioned in
int main()
{
char c[2] = "h";
bool found = false;
for (int i = 0; i < 2; ++i) {
switch (c[i]) {
case 'h': // compare c[i] == 'h'
found = true;
break;
default:
break;
}
}
if (found)
printf("Done!");
return 0;
}