|
15鱼币
int a = 0, b = 0, c = 0, temp, i;
struct
{
char name[20];
} person[4] = {{0}, {"Mark"}, {"Rick"}, {"Glenn"}};
printf("欢迎进入良好公民评选系统:\n\n");
printf("候选人有:Mark, Rick, Glenn\n\n");
for (i=1; i<NUM+1; i++)
{
printf("第%d位投票,请写下支持的候选人的名字:", i);
scanf("%s", &person[0].name);
if (person[0].name == person[1].name)
{
++a;
}
这是那个投票系统的一部分代码,我的计票方式是,若输入的名字和person[1]、[2]、[3]数组中的某一个相同,就在a,b,c上对应的加1,这一段里只是拿Mark举例,若输入是Mark,则把a加1,可是问题就出在判断上,括号里的person[0].name == person[1].name似乎总是为假,我输入再多的Mark,a依然是0,不执行++a。如果输出person[0].name的话显示是Mark,输出person[1].name也显示是Mark,可if后面括号里的就是为假,请问这是为啥呢? 跟数组有关吗?
|
最佳答案
查看完整内容
这段代码有很多错误,首先“NUM”要有个值,来确定循环次数,然后“scanf("%s", &person[0].name);”这句中的“&person[0].name”要将取地址符去掉,这相当于数组的数组,person是个数组,name又是个数组,当输入命令里用“%s”时,要用数组名就是person[0].name,不能用取地址操作符,另外person[0].name你已经设置为0了,又怎么可能等于Mark呢?还有name本身是个数组,怎么可以整体引用呢?还有你的name设置的是字符型的 ...
|