【发布时间】:2019-05-27 14:43:24
【问题描述】:
我正在检查一个项目是否在 C 中的一个数组中,使用 for 循环遍历数组中的每个项目,并将其与用户输入一一进行比较。
int main()
{
char birds[] =
{
[0] = "a",
[1] = "b",
[2] = "c",
[3] = "d",
[4] = "e",
[5] = "f",
[6] = "g",
[7] = "h"
};
int birdfound;
int i;
printf("Enter bird:");
scanf("%c", &birdfound);
//printf("%c", birdfound);
for(i=0; i<8; i++)
{
//printf("Y");
if(birdfound == birds[i]){
printf("Bird in array, found at position %d\n", i);
}
}
system("pause");
return 0;
}
我知道问题在于分支逻辑,因为由于某种原因,它无法将字符输入与数组中的任何字符进行比较。因此,输出什么都没有,程序就结束了。
【问题讨论】:
-
你应该看看你的编译器告诉你什么,在线编译器告诉你:ideone.com/uyYSrk
-
这段代码不是有效的 C 代码,不能干净地编译,所以这是你的问题。
-
你听说过
strchr()吗? -
"a",带双引号,不是char,而是char *。'a',加上简单的引号,是char。 -
@mouviciel:
"a"是/*readonly*/char[2];'a'是int。