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

#include<stdio.h>#include<ctype.h>voidchline(charch,inti,intj);intmain(){printf("plsi... #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前多了空格,为什么啊?这个空格的意思是什么?
展开
 我来答
wchyumo2011
2016-08-31 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2847万
展开全部
这是因为在获取字符串之前输入数字之后有一个回车符号没有消掉。所以在没有空格的时候实际上ch获取到的是一个回车符
而加上空格之后,这个空格相当于占位了,就过滤了这个回车
在scanf("%c", &ch)这句的前面加一句getchar()也是可以的
wenqing8585
2016-08-31 · TA获得超过8252个赞
知道大有可为答主
回答量:8078
采纳率:70%
帮助的人:3878万
展开全部
因为上一个scanf语句输入时你用了回车符作为结束,所以到这个scanf的时候直接将回车符作为输入了。
解决办法,在第二个scanf前加一句getchar()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式