什么"传递strcmp的参数2使得指针来自整数而没有强制转换"C中的错误是什么意思?

1 c strcmp

我正在编译我的C代码,并得到两个错误:

警告:传递strcmp的参数2使得指针来自整数而没有强制转换

警告:注意:预期的const char*但参数的类型为int

我的主要是:

int main(int argc, char *argv[])
{
    //check to make sure that the command line arguments are valid  
    if(argc!=3) 
    {
        printf("invalid function call try again\n");
    }

    //else to choose the proper command
    else
    {
        //reverse routine A         
        if(strcmp(argv[2],'a'||'A')==0) //line 138
        {
            reva(argv[1]);
        }
        //reverse routine B
        else if(strcmp(argv[2],'b'||'B')==0)  //line 143
        {
            revb(argv[1]);
        }
        //reverse routine C
        else if(strcmp(argv[2],'c'||'C')==0)  //line 148
        {
            revc(argv[1]);
        }
        //unacceptable command line argumant
        else
        {
            printf("unacceptable command line argument for reverse routine try again:\n");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

ibi*_*bid 6

它意味着它所说的. 'a'||'A'是一个整数 - 具体来说,它是整数1.第二个参数strcmp必须是字符串,而不是整数.

您似乎打算argv[2]a和进行比较A.你需要两个不同的strcmp电话.此外,您需要使用双引号,而不是单引号.