所以我正在编写一个程序,它接受三种颜色的电阻带的串输入并计算它的电阻。
我已经接受了输入,这个函数使用strcmp(或strcasecmp)来比较字符串和颜色列表。但是,我收到一个编译错误,说"语句不可分配",直接引用if / elseif语句。
我有一个数组中的列表,但出于此目的,我只使用了一个字符串。这是我收到错误的函数。我是否可能需要添加for或while循环?
char calculate_first_resistance(char color1[8])
{
g = strlen(color1)-1;
if( color1[ g ] == '\n')
color1[g] = '\0';
if (strcmp(color1, "black")=NULL)
{
band1=0;
}
else if (strcmp(color1, "brown")=NULL)
{
band1=10;
}
else if (strcmp(color1, "red")=NULL)
{
band1=20;
}
else if (strcmp(color1, "orange")=NULL)
{
band1=30;
}
else if (strcmp(color1, "yellow")=NULL)
{
band1=40;
}
else
{
}
printf("%d", band1);
return EXIT_SUCCESS;
}
答案 0 :(得分:7)
if (strcmp(color1, "black")=NULL)
应该是
if (strcmp(color1, "black")==0)
编辑:比较0而不是空。参见Arc676的帖子
答案 1 :(得分:3)
您在border-box
条件中进行了分配而不是比较:
if
使用(strcmp(color1, "brown")=NULL)
进行比较
==
使用0,因为如果字符串相等,那就是(strcmp(color1, "brown") == 0)
返回的内容(参见this link)
答案 2 :(得分:1)
其他用户已经注意到您的错误是在if中分配而不是比较。
在这种情况下,你很幸运,编译器给你错误,但有些情况下编译器可能不会警告你。
例如,如果你写
if ( band1 = 0)
你会将值0赋给变量band1,而不是比较它们。
这就是为什么许多人喜欢这样写:
if ( 0 == band1 )
在这种情况下,如果你忘记了第二个=,它会给你一个错误,因为声明
if ( 0 = band1 )
无效