C语言,关于getchar()清空回车符的几点经验

本文介绍了C语言中getchar()函数的使用细节,包括如何处理输入的回车符。强调了在读取字符时,回车符可能留在缓存中的问题,以及在不同情况下getchar()的放置位置对程序行为的影响。例如,在循环读取字符时,需要正确处理回车符以避免数据丢失。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近被getchar()弄的有点糊涂,现在基本缕清了。

拿程序举个例子:

#include<stdio.h>
int main(void)
{
	
	char ch1,ch2;
	printf("Iam testing *********.\n");
	
	printf("So hard! ***********\n");
	
	
	ch1=getchar();
	
	printf("$$$$$$$%c$$$$$$$\n",ch1);
	
	getchar();
	
	ch2=getchar();
	
	printf("$$$$$$$$$$$%c$$$",ch2);
	
	return 0;
}

这里要说明的是:  

1、 
  printf("Iam testing *********.\n");
    
    printf("So hard! ***********\n");  这两个语句并不会在缓存中留下  \n 符。

所以在第一个 ch1=getchar() 前面不需要加上 getchar().

加了反而是错的, 缓存中没有字符,如果是  getchar().

                                                                        ch1=getchar()

输入一个字符后,反而会把字符丢掉,而把 \n  赋给了 ch1.  

2,  用于   清空缓存中回车符的  getchar(),  可以放在 ch1=getchar() 的后面,也可以放在 ch2=getchar() 的前面,  但是  二者只能取其一,不能同时都用。

3、如果是 循环,则要注意 循环产生的问题,   这时 如果ch1=getchar() 的后面没有 ch2=getchar()  ;  那么ch2=getchar() 的前后都要加上 getchar() 用于清除缓存中的\n。

如下程序

#include<stdio.h>
int main(void)
{
	
	char ch1,ch2;
	printf("Iam testing *********.\n");
	
	printf("So hard! ***********\n");
	
	while(ch1!='a')
	
	{
	ch1=getchar();
	
	printf("$$$$$$$%c$$$$$$$\n",ch1);
	
	getchar();
	
	ch2=getchar();
	
	getchar();
	printf("*********%c******\n",ch2);
		
	}
	
	printf("Done!\n");
	
	return 0;
}

或者 ch1   ch2  赋值语句后各加一个getchar(), 都是可以的。

总之,就是要将输入时的 回车符  处理掉。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值