C:if-else关于变量

时间:2016-03-02 12:01:39

标签: c if-statement

我是编程新手,我是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;
}

5 个答案:

答案 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表示(在这种情况下为换行符)。