我正在编写一个程序,根据用户的颜色输入计算电阻值。给我带来麻烦的功能是为了获得字符串形式的颜色,并返回匹配的整数值。
但是,尽管进行了各种更改,但它只返回else
语句中的值100,这只是main()
的一条消息,表明字符串与任何颜色都不匹配。< / p>
未完成的代码如下:
#include <stdio.h>
#include <math.h>
int values123(char c[10]);
void main(void)
{
int bands = 0;
char band1[10];
char band2[10];
char band3[10];
char band4[10];
char band5[10];
printf("Number of colour bands: ");
scanf_s("%i", &bands);
printf("\nBand 1: ");
scanf_s("%s", band1);
if (values123(band1) == 100)
{
printf("Colour is invalid!");
}
fflush(stdin);
printf("\nBand 2: ");
scanf_s("%s", band2);
fflush(stdin);
printf("\nBand 3: ");
scanf_s("%s", band3);
fflush(stdin);
printf("\nBand 4: ");
scanf_s("%s", band4);
fflush(stdin);
if (bands == 5)
{
printf("\nBand 5: ");
scanf_s("%s", band5);
fflush(stdin);
}
getch();
}
int values123(char c[10])
{
if (strcmp(c, "black") == 0)
return (0);
else if (strcmp(c, "brown") == 0)
return (1);
else if (strcmp(c, "red") == 0)
return (2);
else if (strcmp(c, "orange") == 0)
return (3);
else if (strcmp(c, "yellow") == 0)
return (4);
else if (strcmp(c, "green") == 0)
return (5);
else if (strcmp(c, "blue") == 0)
return (6);
else if (strcmp(c, "violet") == 0)
return (7);
else if (strcmp(c, "grey") == 0)
return (8);
else if (strcmp(c, "white") == 0)
return (9);
else
return (100);
}
请随时告诉我我所犯的任何错误,无论这些错误是否与问题有关,因为我相信我正在赚钱!
顺便说一句,这不是一个家庭作业问题(就像它看起来一样),我是一名电子工程技术专业的学生,并且通过制作与我正在学习的内容有关的课程来练习C :)
谢谢!
答案 0 :(得分:1)
如果使用==来比较两个字符串,则比较两个字符串的地址是否相等,这肯定是不相等的。请尝试以下
if(strcmp(c, "black") == 0)
{
return 0;
}
在字符串(字符数组)上使用scanf
时,您不需要显式使用&
,因为在C数组中默认使用传递地址。
编辑:如果是梯子,则使用else,因为它在类似的集上搜索。