C将const char*转换为char

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]

char argOne = argv[1];
     ^        ~~~~~~~
Run Code Online (Sandbox Code Playgroud)

警告:溢出转换案例值到切换条件类型(825373492到52)[-Wswitch]

case '1234' :
     ^
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 6

在你的代码中,

  • 第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[])