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