谁帮我看下这程序错在哪里?

来源:百度知道 编辑:UC知道 时间:2024/05/28 21:26:48
#include<stdio.h>
void main()//输出几个字符串
{
char a[20],ch;

do
{

printf("input a string!\n");
scanf("%s",a);
printf("%s\n",a);

printf("Y or N\n");
scanf("%c",&ch);// 为什么这个语句总是不执行??当输入y时候在进入下次循环!输入下个字符窜

}while(ch=='y');
}

因为编译系统处理输入变量的时序和我们想的不是完全一样,当你在输入字符串a后,进行了回车,此时编译系统将回车符放在缓存中,而当出现另一个输入变量时,编译系统将回车符给了ch了,所以就不需要输入了。此时ch=\n,故会有以上结果。
我们可以加一个getchar(),来吸收那个回车符。
#include<stdio.h>
void main()//输出几个字符串
{
char a[20],ch;

do
{

printf("input a string!\n");
scanf("%s",a);
getchar();//!!!!!!
printf("%s\n",a);
printf("Y or N\n");
scanf("%c",&ch);// 为什么这个语句总是不执行??当输入y时候在进入下次循环!输入下个字符窜
}while(ch=='y');
}

#include<stdio.h>
void main()//输出几个字符串
{
char a[20],ch;

do
{

printf("input a string!\n");
scanf("%s",a);
fflush(stdin);
printf("%s\n",a);

printf("Y or N\n");
fflush(stdin);
scanf("%c",&ch);// 为什么这个语句总是不执行??当输入y时候在进入下次循环!输入下个字符窜

}while(ch=='y');
}
<