清空函数

一、清屏

1、clrscr()

清除文本模式窗口 清屏的意思 就是把之前显示出的文字字符去掉 跟cmd里面的清屏的功能是一样的 实际上是clear screen的简写。

注:
①只有在Turbo C 中可以运行 !
②在Turbo C++ 中,需要先另存为(save as).C格式,才能使用。

2、system(“cls”);

(1)头文件:stdio.h

system(“cls”)可以在vc中,这种办法的缺点是程序额外运行系统程序执行清屏操作,延长了程序执行时间。

二、清空键盘缓冲区

1、fflush(stdin)

清空输入缓冲区,通常是为了确保不影响后面的数据读取
此函数仅适用于部分编译器(如VC6),但是并非所有编译器都要支持这个功能(如gcc3.2)

int fflush(FILE*stream);
如果stream指向输出流或者更新流(update stream),并且这个更新流
最近执行的操作不是输入,那么fflush函数将把任何未被写入的数据写入stream
指向的文件(如标准输出文件stdout)。否则,fflush函数的行为是不确定的。
fflush(NULL)清空所有输出流和上面提到的更新流。如果发生写错误,fflush
函数会给那些流打上错误标记,并且返回EOF,否则返回0

返回值:成功返回0,否则返回EOF

2、setbuf(stdin,NULL)

在Linux中可用
void setbuf(FILE *steam, char *buf);
setbuf函数具有打开和关闭缓冲机制。为了带缓冲进行I/O,参数buf必须指向一个长度为BUFSIZ(定义在stdio.h头文件中)的缓冲区。通常在此之后该流就是全缓冲的,但是如果该流与一个终端设备相关,那么某些系统也可以将其设置为行缓冲。为了关闭缓冲,可以将buf参数设置为NULL

3、scanf(“%*[^\n]%*c”)

清除缓冲区中一行的数据,但是如果缓冲区中只有一个’\n’时会清除失败,因为%*[^\n]遇到’\n’直接返回了,%*c没有起作用

4、scanf(“%*[^\n]”);scanf(“%*c”);

将scanf(“%*[^\n]%*c”)拆为两个,可以处理缓冲区只有一个’\n’的情况

总结:
fflush(stdin)函数是标准的作法。
setbuf(stdin,NULL)是GCC下可用的一种方法。
Linux下可以使用setbuf
scanf(“%*[^\n]”);scanf(“%*c”);是通用的清除一行数据的方法

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值