关于scanf问题
只是部分代码。
代码1:#include<stdio.h>
int main(void)
{
char ch;
int a[10];
int i,j,temp;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("请输入A或D:");
scanf(" %c",&ch);
return 0;
}
代码2::#include<stdio.h>
int main(void)
{
char ch;
int a[10];
int i,j,temp;
printf("请输入10个整数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("请输入A或D:");
scanf("%d",&ch);
return 0;
}
为什么代码1中如果把scanf(" %c",&ch);该为scanf("%c",&ch);就不能输入。
但代码2中scanf("%d”,&ch);能输入。 scanf问题
[解决办法]
scanf("%c",&ch);会接受回车符,所以你上面的输入完毕后,最后一个回车符会被ch接受,就是说已经输入了,所以看上去就像是跳过了执行。但scanf("%d",&ch);不会接受回车符。
你可以在scanf("%c",&ch);之前加一句getchar()吸收回车符。
或者是把getchar();改成fflush(stdin);清空输入缓冲区。