以下这段代码里,为什么执行一次后,提示再输入的时候,scanf("%c",&ch)不等我输入就执行下一条语句了?

#include <stdio.h>
#include <ctype.h>
void chline(char ch,int i,int j);
int main()
{
printf("pls input a char:");
char ch=getchar();
printf("pls input two number(a<b):");
int i,j;

while (isalpha(ch)&&(scanf("%d%d",&i,&j)==2)&&(i<j))
{
chline(ch,i,j);
printf("pls input a char:");
scanf("%c",&ch);
printf("pls input two number(a<b):");
}
printf("inputs valid.\n");
return 0;
}
void chline(char ch,int i,int j)
{
for(int a=0;a<i;a++)
printf(" ");
for(int b=0;b<(j-i);b++)
printf("%c",ch);
printf("\n");
}
scanf("%c",&ch);将这个写成scanf(" %c",&ch);就可以等待我继续输入了,也就是%c前多了空格,为什么啊?这个空格的意思是什么?

这是因为在获取字符串之前输入数字之后有一个回车符号没有消掉。所以在没有空格的时候实际上ch获取到的是一个回车符
而加上空格之后,这个空格相当于占位了,就过滤了这个回车
在scanf("%c", &ch)这句的前面加一句getchar()也是可以的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-31
因为上一个scanf语句输入时你用了回车符作为结束,所以到这个scanf的时候直接将回车符作为输入了。
解决办法,在第二个scanf前加一句getchar()

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网