C语言问题求大神帮忙!!!

char order(int a)
{
if(a==0)
return 'b';
else
return 'w';
}
int operate(char p[iline][jline],int sum)
{
int g;
char x;
int i;
int j;
g=sum;
g=g%2;
printf("输入数字\n");
scanf("%c",&x);
for(i=1;i<=6;i++)
for(j=0;j<3;j++)
if(p[i][j]==x)
{p[i+1][j]=order(g);
break;}
return 0;
}
void main()
{
int sum=1;
char p[xline0[yline];
问题是下面的这个循环连续调用了operate函数两次不懂为什么?
while(1)
{
printscreen(p);
sum++;
operate(p,sum);
printf("%d",sum);
}
}

2个回答

首先,因为你是while循环,所以会一直进行循环
然后,你用的是scanf("%c",&x);读,用%c的时候一定要注意,它是可以读回车符的(所以这个地方会循环两次)
因为第一次循环只是读走了你输入的字符(输入缓冲区还有遗留的回车符)
所以第二次循环不会等待输入,而是直接读走回车符(造成循环了两次)
在scanf("%c",&x);后面加上 fflush(stdin);清空输入缓冲区就行了

qq423399099
小灸舞 回复qq_29777783: 我QQ:423399099
3 年多之前 回复
qq_29777783
BeBreave 好厉害能加个好友吗?非常感谢,真的今天被这堵得难受死了
3 年多之前 回复

printscreen()你的这个函数发出来看看。。。。。。。。

qq_29777783
BeBreave 只是个刷新的system(“”cls“”);
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!