我是编程新手,我是C语言的初学者,我想在make if时询问我的问题:
每个水果的代码..
Apple的A-001,价格为3美元
A-002 for Grapes with $ 4
B-001适用于牛油果,价格为2美元
B-002 for Orange,$ 1
然后输入将是 数量,水果代码
输出将是 总计(数量*价格)
但是,当我这样做时:
If (fruitcode=='A-001')
它告诉我角色常数太长了......我应该用什么水果代码?它只是整数或字符还是什么?
这是我的代码:
q为数量 h代表价格 K代表水果代码
int main(){ int q,h,k,t;
printf("============================================\n");
printf("= Program =\n");
printf("============================================\n");
printf(" Fruit Code Fruit Prices \n");
printf(" A-001 Apple Rp. 13.000 \n");
printf(" A-002 Grape Rp. 16.000 \n");
printf(" B-001 Avocado Rp. 10.000 \n");
printf(" B-002 orange Rp. 12.000 \n");
printf("============================================\n");
printf("\n");
printf(" \n");
printf("============================================\n");
printf("= Form =\n");
printf("============================================\n");
printf("Transaction Time: ");
scanf("%s", &t);
printf("Fruit Code : ");
scanf("%s", &k);
if(k=='A-001')
printf("You Choose Apple");
}
else if(k='A-002'){
printf("You Choose Grape");
}
else if(k='B-001'){
printf("You Choose Avocado");
}
else{
printf("You Choose orange");
}
printf("Quantity: ");
scanf("%s", &q);
getch();
return 0;
}
答案 0 :(得分:2)
您需要对字符串使用双引号,而不是单引号。单引号仅适用于单个字符。
你也无法比较那样的字符串。您需要使用类似strcmp()
的内容。
答案 1 :(得分:2)
fruitcode
可能最终成为C风格的字符串;即它是一个指针(类型为char*
)到一个由空终止的char
元素数组。
然后,您可以使用if (!strcmp(fruitcode, "A-001"))
行来测试相等性。
请注意,我使用了双引号字符来表示字符串文字。
(使用单引号字符表示完全不同的内容:如果在单引号字符中包含多个字符,则C将其解释为字符数组文字。这实际上表示的是实现定义; I认为您的编译器抱怨字符数组的长度超过sizeof(int)
。)
答案 2 :(得分:0)
要比较C中的字符串,请使用strcmp
函数。
答案 3 :(得分:0)
您需要使用strcmp
:
if (strcmp (fruitcode, "A=001") == 0)
答案 4 :(得分:0)
在C中,您无法将fruitcode
与"A-001"
进行比较。 C的==
运算符只能比较字符,而不能比较字符串(只有单个字符)。
如果要比较它们,请执行以下操作:
strcmp(fruitcode,"A-001");
注意我的答案中的" "
;这意味着一个字符串。关于你的问题,' '
暗示了一个角色。 ' '
内不能有多个字符('\n'
之类的特殊字符除外,似乎是2个字符,但用1表示(在这种情况下为换行符)。