C缓冲区(输入输出问题)

之前做电子通讯录出现过一个问题,有“1,2,3”几个数字对应的功能供用户选择,但只要每次用户输入英文字母或者其他不适数字类的东西,通讯录就会崩溃,后来发现这个缓冲区有关。

scanf和printf都是行缓冲。若缓冲区内始终有不确定的内容,很容易对程序的稳定性造成影响。

所以后来写了个清除缓冲区的函数

void clear_cache()//跳过输入行的剩余部分,清空缓冲区
{
	while(getchar() != '\n')	//getchar()不断读取缓冲区的内容,知道行结束
	{
		continue;
	}
}

函数很简单但是作用很大,每次在scanf等输入之前加上清空缓冲区函数可以确保每次缓冲区都很干净,不会读入乱七八糟的东西,用户之前输入的东西不会影响到下一次的输入。

另外

scanf 的返回值是它能够成功读入的变量的个数,这里可以通过检测的返回值,来确定用户成功输入了几个满足要求的值。

printf 的返回值时候它打印了多少个字符。

关于缓冲区的问题以后还会有更深入的学习,所以以后还会有更新~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值