Jac*_*uer 2 c char switch-statement
我搜索好半天才找到了答案,但我只找到一个解决方案的C++,似乎并没有为之工作C.我试图转换的论点const char *来char在我使用switch的语句.我尝试了各种各样的事情strdup(),但没有成功.
#include <stdio.h>
int main(int argc, const char *argv[]) {
char argOne = argv[1];
char argTwo = argv[2];
switch(argOne) {
case '1234' :
printf("1234!\n" );
break;
default :
printf("Invalid\n" );
}
}
Run Code Online (Sandbox Code Playgroud)
编译时:
警告:指向整数转换的不兼容指针使用类型为'const char*'的表达式初始化'char'[-Wint-conversion]
Run Code Online (Sandbox Code Playgroud)char argOne = argv[1]; ^ ~~~~~~~警告:溢出转换案例值到切换条件类型(825373492到52)[-Wswitch]
Run Code Online (Sandbox Code Playgroud)case '1234' : ^
在你的代码中,
第1点:
char argOne = argv[1];
Run Code Online (Sandbox Code Playgroud)
是非常错误的.你不能把const char *(指针)放到char变量上.
第2点:
case '1234'
Run Code Online (Sandbox Code Playgroud)
也错了.这里,'1234' 不表示字符串.它是一个多字节的charcater,很可能是你不想要的东西.同样,即使您将其更改为类似的内容"1234",仍然是不正确的,因为它不会给您预期的值,并且字符串不能用于case语句值.
解决方案:switch您可以尝试使用strcmp()比较传入的字符串并相应地进行选择,而不是在此处使用案例.
注意:推荐的签名main()是int main(int argc, char *argv[])
| 归档时间: |
|
| 查看次数: |
1097 次 |
| 最近记录: |