我试图制作一个计算器,但我的if
语句会产生一些警告。我也是C的新手。
int main(){
float num1;
float num2;
char input[5];
printf("Hello my name is baymax\n");
printf("Enter either add, sub, mult, div:\n");
scanf("%4s", input);
printf("Enter first number\n");
scanf("%f", &num1);
printf("Enter second number\n");
scanf("%f", &num2);
if(input == 'add'){
printf("%.1f + %.1f = %.1f",num1, num2, num1+num2);
....
}
return 0;
}
如果输入的字符串是add
,则应添加两个数字。但是在编译时我收到以下警告:
calculator.c:19:14: warning: multi-character character constant [-Wmultichar]
if(input == 'add'){
^
calculator.c:19:11: warning: comparison between pointer and integer
('char *' and 'int')
if(input == 'add'){
答案 0 :(得分:3)
该代码存在两个问题:第一个问题是'add'
是一个多字符文字,而不是字符串。字符串将使用双引号,如"add"
。
第二个问题是你不能使用相等比较来比较字符串,因为它会比较指针而不是字符串的内容。要比较字符串,您需要使用strcmp
。
if (strcmp(input, "add") == 0) { ... }
答案 1 :(得分:1)
此处strcmp
(http://linux.die.net/man/3/strcmp)是您的朋友
你需要
if (strcmp(input, "add") == 0) ...
PS:查看scanf
的手册页 - 它会返回一个你应该检查的值
答案 2 :(得分:1)
我想这是警告你的线
if(input == 'add')
在C字符串中是派生类型,而不是int
,float
,char
等本机类型,因此您无法直接使用它们。
您必须使用函数来比较字符串。有许多函数适用于标准库中的字符串(在string.h
中定义)。它们都以str
前缀开头(几乎所有,请参阅手册)
在您的特定情况下,您需要strcmp()
来比较字符串,如果它们相等则返回0:
if(strcmp(input, "add") == 0)