C语言中的scanf函数是输入函数,getchar是获取用户在命令行输入的字符,scanf函数遇到空格或者是换行符(\n)会跳过,但是getchar函数则不会跳过这些字符,看下面这段代码:
scanf("%d %d",&rows,&cols);
ch=getchar();
printf(“%c”,ch);
在命令行中输入两个整数,然后按下回车,运行结果是输出一行,因为getchar获取的字符是换行符,这个换行符是输入两个数字之后,按下回车之后发生的。
所以当scanf函数和getchar函数搭配使用的时候需要注意在运行了scanf函之后,换行符还是留在了输入行中。
下面是一个输入一个字符,两个整数,打印几行几列该字符的案例。
#include<stdio.h>
void display(char cr,int lines,int width);//声明函数
int main(void){
//存储用户输入的字符
char ch;
//行和列
int rows,cols;
//输入一个字符,两个整数
printf("enter a character and two integers:\n");
//判断输入的字符是否为换行符,如果遇到换行符,则结束while循环
while((ch=getchar())!='\n'){
//输入两个整数
scanf("%d %d",&rows,&cols);
//调用display函数,根据输入的行和列,打印相应数量的字符
display(ch,rows,cols);
// 跳过scanf后面的换行符,用了一个getchar来获取换行符,下一个getchar就会获取输入的字符了
while(getchar()!='\n'){
continue;
}
// 让用户继续输入内容
printf("enter another character and two integers;\n");
printf("enter a newline to quit.\n");
}
// 结束输入
printf("Bye.\n");
return 0;
}
// 传入输入的字符,行和列,打印几行几列的字符
void display(char cr,int lines,int width){
int row,col;
for(row=1;row<=lines;row++){
for(col=1;col<=width;col++)
putchar(cr);
putchar('\n');
}
}
运行:
编辑搜图
请点击输入图片描述(最多18字)