大家帮忙看看吧,不知道哪出的错误!万分感谢!
/*******************************************************/
/* 对候选人得票的统计成绩。 */
/* 设有3个候选人,每次输入一个得票的候选人的名字,要求 */
/* 最后输出各人得票结果。 */
/*******************************************************/
#include <stdio.h>
#include <string.h>
struct person //定义结构体,并对结构体数组初始化。
{
char name[20];
int cout;
} leader[3] = {{"Li", 0}, {"Zhang", 0}, {"Fun", 0}};
void main()
{
int i, j;
char leader_name[20];
while(1)
{
scanf("%s", leader_name);
for(j = 0; j < 3; j++)
{
if(strcmp(leader_name, leader[j].name) == 0)
{
leader[j].cout++;
}
}
if(getchar() == '*')
{
break;
}
}
printf("\n");
for(i = 0; i < 3; i++)
{
printf("%5s:%d\n", leader[i].name, leader[i].cout);
}
}
[解决办法]
- C/C++ code
while(1) { scanf("%s", leader_name); for(j = 0; j < 3; j++) { if(strcmp(leader_name, leader[j].name) == 0) { leader[j].cout++; } } fflush(stdin); //不刷新,读入的可能是回车了。 if(getchar() == '*') { break; } }
[解决办法]
getchar()获取的是输入缓冲区的内容
缓冲区里面存放的还是上次输入*之后的那个回车符
所以判断失效
http://www.cnblogs.com/codingmylife/archive/2010/04/18/1714954.html