试图弄清楚这里发生了什么。我只是在学习C,所以对我很轻松。 :P我被分配创建一个从厘米到英寸的单位转换器。我懂了。现在我想通过创建选项来增加它的味道。我的编译器不喜欢我拥有的东西。这是前几行......
main(void)
{
float centimeter;
char cnv[3];
float entry;
float oz;
float lb;
float cm;
float lb1;
centimeter=2.54;
lb1=2.2;
printf("Hello. Please type exactly, the type of conversion you would like to do.\n\n1. cm to in\n\n2. lb to kg\n");
scanf("%3c",&cnv);
if (strcmp(cnv=cm));
{
printf("Please enter your length in centimeters:\n");
scanf("%f",&entry);
printf("with %.0f centimeters in length, that converts to %.2f inches.",entry,entry/centimeter);
}
if (strcmp(cnv=lb));
{
printf("Please enter your weight in pounds:\n");
scanf("%f",&entry);
printf("with %.0f Pound(s) of weight, that converts to %.2f Kilogram(s).",entry,entry/lb1);
}
}
它给了我标题中的错误。我该如何解决这个问题?
答案 0 :(得分:3)
1)你混淆=(赋值)和==(测试平等)
2)您无法直接将数值与字符数组进行比较。您需要将一个或另一个转换为可以比较的类型 - 如果您使用strcmp()
,将数字转换为字符串(并了解该函数如何返回其结果,这不是您所假设的)这里),或将字符串转换为数字类型并进行比较。
答案 1 :(得分:0)
strcmp
语法不正确。有关字符串比较功能的更多信息,请查看此链接
http://www.tutorialspoint.com/ansi_c/c_strcmp.htm
答案 2 :(得分:0)
作为旁边strcmp()在您传入的字符串是等效的时返回0,因此使用更像这样的语法是合适的:if(!strcmp(cnv, cm))
或if(strcmp(cnv, cm) == 0)
如果我猜猜你真正想做的事情是这样的:if(strcmp(cnv, "cm") == 0)
cm是一个变量的名称,而“cm”是一个带有字符'c'的零终止字符串和'm'
您需要担心的另一件事是从scanf读取3个字符,因为如果输入为“cm”并且用户按Enter键输入文本。该程序扫描了3个字符,其中一个是换行符'\ n'。因此,当你去strcmp()时,程序会比较每个字符,直到它到达一个已经被清零的字节。只读取3个字符,我不确定你捕获的字符串是否为零终止,但我确信该字符串可能包含一个'\ n',它会将strcmp()的结果抛出。