getchar()的用法

(以下内容对于刚接触C的同学会有帮助)

getchar()是I/O函数中的一员【所谓I/O函数就是input output 函数】

大多数的系统都是行缓冲输入【先把我们要输入的键入缓存区,当用户按下“Enter”后,程序才可以使用该内容】

getchar 与 scanf 不同,前者是可以按顺序读取所有的字符(包括空格,制表符,换行符)

而scanf 在读取数字的时候会跳过空格,制表符,换行符

#include<stdio.h>
int main()
{
	char ch;
	int n1,n2;
	printf("输入一个字符\n");
	ch=getchar();
	printf("/n");
	printf("输入2个数字\n");
	scanf("%d%d",&n1,&n2);
	putchar(ch);printf("/n");
	printf("%d %d",n1,n2);
}

读者可以用以上代码自己试一试。

#include<stdio.h>
void display(char cr,int lines,int width);
int main()
{
	int ch;
	int rows,cols;
	printf("输入一个字符和两个数字\n");
	while((ch=getchar())!='\n')
	{
		scanf("%d%d",&rows,&cols);
		display(ch,rows,cols);
		printf("输入另一个字符和两个数字\n");
		printf("输入一个新的换行来结束"); 
	}
	printf("再见\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');
	 }
 }

这是一个getchar 和 scanf 混用的函数,他的输出是有问题的,我们希望他是在我们最后按下”Enter"之后程序结束,但是这个程序只能“一轮游”。其原因在于,我们为了让程序开始使用缓存区的内容,我们不得不输入“Enter”(也就是按下换行键),而在这个换行符,也会进入缓存区,相当于提前输入了一个“Enter”。所以才会这样。改进的方案可以是

while((ch=getchar())!='$')

用一个别的字符来代替“\n”。

这里再给初学者拓展一下,scanf()函数是有返回值的,输入几个数字,返回值就是几。

#include<stdio.h>
int main()
{
	int i,j,k,l,m;
	//i=scanf("%d",&k);
	printf("\n");
	j=scanf("%d%d%d",&l,&k,&i);
	printf("\n");
	printf("%d",j);
	
}

可以在这个代码上做实验。

最后希望可以帮助到你@你

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值