如何在函数中使用 strcmp() 时修复预期 'const char *' 但参数类型为 'char **`

How to fix expected 'const char *' but argument is of type 'char **` while using strcmp() in a function

它应该是一个函数,可以根据所选运算符求出两个数字的和、差等,但是当我使用 strcmp() 检查所选运算符时,出现错误 expected 'const char *' but argument is of type 'char **'

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include <string.h>

int calc(int ran1,int ran2,char op){
    if(strcmp(op, "+")==0){
        return ran1+ran2;
    }
    if(strcmp(op, "-")==0){
        return ran1-ran2;
    if(strcmp(op, "*")==0){
        return ran1*ran2;
    }
    if(strcmp(op, "/")==0){
        return ran1/ran2;
    }
    }
}
int main(){
    int ran1=25;
    int ran2=5;
    char op="+";
    printf("%d", calc(ran1, ran2, op));

}

好像是这个错误信息

expected 'const char *' but argument is of type 'char **'

不对应于提供的代码,因为程序中没有使用类型 char ** 的表达式。

由于大括号的放置无效,函数中也存在逻辑错误

int calc(int ran1,int ran2,char op){
    if(strcmp(op, "+")==0){
        return ran1+ran2;
    }

    if(strcmp(op, "-")==0){
        return ran1-ran2;
        if(strcmp(op, "*")==0){
            return ran1*ran2;
        }
        if(strcmp(op, "/")==0){
            return ran1/ran2;
        }
    }
}

然而对于初学者来说这个初始化

char op="+";

不正确。看来你的意思是

char op = '+';

那就是你需要用整数字符常量'+'而不是字符串文字"+".[=26来初始化类型char的对象op =]

因为参数 op 的类型是 char

int calc(int ran1,int ran2,char op){

那么它可能不会在 strcmp 的调用中使用,例如

 if(strcmp(op, "+")==0){

在这个和其他类似的 if 语句中只使用相等运算符 == 就足够了

if ( op == '+' )

请注意,您可以使用 switch 语句代替 if 语句。例如

switch ( op )
{
case '+':
    //...
case '-':
    //...
}