求教!为什么进入第二次循环,scanf和gets是同时执行的?(新手刚学C)
#include <stdio.h>
#define MAX 100
int main()
{
int i,n,ch = 1, flag = 1;
char str[MAX];
while(ch == 1){
printf("\t\t请输入一串字符:");
gets(str);
for(i = 0; str[i] != '\0'; i++)
;
for(n = 0; n < i; n++)
if(str[n] != str[i-n-1])
flag = 0;
if(flag == 1){
printf("\n\n\t\t字符串:[");
printf("%s", str);
printf("]是回文!");
}else
printf("\n\n\t\t字符串:[%s]不是回文!", str);
printf("\n\n是否继续:1 是; 2 否 \n");
printf("请选择:");
scanf("%d", &ch);
}
getch();
return 0;
}
[解决办法]
}else{//缺了个{ printf("\n\n\t\t字符串:[%s]不是回文!", str); printf("\n\n是否继续:1 是; 2 否 \n"); printf("请选择:"); scanf("%d", &ch); }
[解决办法]
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。
[解决办法]
哦,我看错了,呵呵。最好用插入源代码,那样有格式。
在scanf后加上一个getchar();获取'\n'
[解决办法]