C 将 const char * 转换为 char

标签 c char switch-statement

我搜索了很长时间才找到答案,但我只能找到 solution对于似乎不适用于 CC++。我正在尝试将 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" );
    }
}

编译时:

warning: incompatible pointer to integer conversion initializing 'char' with an expression of type 'const char *' [-Wint-conversion]

char argOne = argv[1];
     ^        ~~~~~~~

warning: overflow converting case value to switch condition type (825373492 to 52) [-Wswitch]

case '1234' :
     ^

最佳答案

在你的代码中,

  • 第 1 点:

     char argOne = argv[1];
    

    是非常错误的。您不能将 const char *(指针)指向 char 变量。

  • 第 2 点:

      case '1234'
    

    也错了。这里,'1234' 表示一个字符串。它是一个多字节字符,这很可能是您不想要的。同样,即使您将其更改为类似 “1234” 的内容,它仍然不正确,因为它不会为您提供预期值,并且 strings 不能用于 case 语句 values

解决方案:您可以尝试使用 strcmp() 而不是使用 switch 大小写比较传入的字符串并相应地进行选择。


注意:main()的推荐签名是int main(int argc, char *argv[])

关于C 将 const char * 转换为 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30571492/

相关文章:

c - 如何使用 LD_PRELOAD 检查是否已预加载 linux 共享库

c - 嵌套结构中的 Memcpy

c - 丢弃捕获的数据包

c - 如何检查变量是否不是某物

c - C中如何确定unsigned char的范围?

c++ - 在C++中实现C-API文本 block 类时出错

python - 如何在 Python 中搜索正则表达式匹配项?

c - xv6 - switch 语句中的 '+' 是什么意思

c++ - 根据一些规则随机选择枚举值

arrays - C 将宏作为参数指针传递