It's supposed to be a function that finds the sum, difference etc of a two numbers depending on the chosen operator but when I use strcmp() to check the chosen operator I get the error 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));
}
CodePudding user response:
It seems that this error message
expected 'const char *' but argument is of type 'char **'
does not correspond to the presented code because neither expression of the type char ** is used in the program.
Also there is a logical error in the function due to the invalid placement of braces
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;
}
}
}
Nevertheless for starters this initialization
char op=" ";
is incorrect. It seems you mean
char op = ' ';
That is you need to initialize the object op of the type char with the integer character constant ' ' instead of the string literal " ".
As the parameter op has the type char
int calc(int ran1,int ran2,char op){
then it may not be used in a call of strcmp like
if(strcmp(op, " ")==0){
It is enough to use just the equality operator == in this and other similar if statements like
if ( op == ' ' )
Take into account that instead of the if statements you could use a switch statement. For example
switch ( op )
{
case ' ':
//...
case '-':
//...
}
