如何在函数中使用 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 '-':
//...
}
它应该是一个函数,可以根据所选运算符求出两个数字的和、差等,但是当我使用 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 '-':
//...
}