Linux 中C语言如何清空标准输入流
2009-11-17 20:57
435 查看
今天在Linux程序设计的时候需要清空标准输入缓冲区,于是使用了如下Windows程序设计中的方法:
1.fflush(stdin);这个fflush()函数根本不是标准C中的函数,只是标准C的扩展,所以在Linux中使用根本不行;
2.中网上搜索了下,发现有网友建议使用rewind(stdin);这个函数其实是将指针指向流的开始处。但是它是文件操作中的一个函数,操作的是FILE型流,在Windows程序设计中是可以清空标准输入缓冲区的,但是在Linux中不行。
3.通过读完标准缓冲区中的剩余字符并丢弃掉来清空标准缓冲区,使用的函数是getchar(),此函数的作用是从标准输入缓冲区中读出一个字符,此方法中Linux中可行。
如果需要清除stdin可以通过如下循环实现:
char ch;
while((ch=getchar())!='/n'&&ch!=EOF);
以上语句将清除stdin中的字符,知道遇到换行符或者是读完缓冲区。
以上的方法均可以在Windows程序设计中用来清除缓冲区;
4.在Linux程序设计中也还是有一种用来清空stdin中的方法,直接调用如下的函数:
setbuf(stdin, NULL);
此函数我还没有来得及测试;
通过以上分析,在Linux下清空stdin用两种方法:
1.通过读取剩余的字符并丢弃掉;
char ch;
while((ch=getchar())!='/n'&&ch!=EOF);
或者是:
char s[1024];
fgets(s,1024,stdin);
2.使用函数setbuf(stdin,NULL);
以上跟大家分享,如有更好的方法请指出,谢谢。
1.fflush(stdin);这个fflush()函数根本不是标准C中的函数,只是标准C的扩展,所以在Linux中使用根本不行;
2.中网上搜索了下,发现有网友建议使用rewind(stdin);这个函数其实是将指针指向流的开始处。但是它是文件操作中的一个函数,操作的是FILE型流,在Windows程序设计中是可以清空标准输入缓冲区的,但是在Linux中不行。
3.通过读完标准缓冲区中的剩余字符并丢弃掉来清空标准缓冲区,使用的函数是getchar(),此函数的作用是从标准输入缓冲区中读出一个字符,此方法中Linux中可行。
如果需要清除stdin可以通过如下循环实现:
char ch;
while((ch=getchar())!='/n'&&ch!=EOF);
以上语句将清除stdin中的字符,知道遇到换行符或者是读完缓冲区。
以上的方法均可以在Windows程序设计中用来清除缓冲区;
4.在Linux程序设计中也还是有一种用来清空stdin中的方法,直接调用如下的函数:
setbuf(stdin, NULL);
此函数我还没有来得及测试;
通过以上分析,在Linux下清空stdin用两种方法:
1.通过读取剩余的字符并丢弃掉;
char ch;
while((ch=getchar())!='/n'&&ch!=EOF);
或者是:
char s[1024];
fgets(s,1024,stdin);
2.使用函数setbuf(stdin,NULL);
以上跟大家分享,如有更好的方法请指出,谢谢。
相关文章推荐
- [Linux C语言](学习笔记)标准输入流输出流以及错误流的重定向机制(1)
- 如何读取Linux键值,输入子系统,key,dev/input/event,dev/event,C语言键盘
- c语言:C语言清空输入缓冲区在标准输入(stdin)情况下的使用
- c语言:C语言清空输入缓冲区在标准输入(stdin)情况下的使用
- C语言中如何清空键盘缓冲区,Linux和Windows下完美实现
- Linux程序设计 清空标准输入缓冲区
- [Linux C语言](学习笔记)标准输入流输出流以及错误流
- [Linux C语言](学习笔记)标准输入流输出流以及错误流的重定向机制(2)
- C语言 标准输入 清空缓存
- Linux下如何清空输入缓冲区
- 如何在Linux下禁用键盘、触摸板、鼠标等输入设备
- 如何在 Linux 下编译并运行 C语言
- Linux系统里如何彻底的清空屏幕
- Linux下面如何进行C语言编程
- C语言如何使标准输出重定向到一个文件
- linux下python如何输入不用按回车
- 【C语言】编写一个程序,从标准输入读取C源代码,验证所有的花括号都正确的成对出现
- Linux下如何模拟按键输入和模拟鼠标
- Linux下C语言实现 密码不回显输入
- Linux下C编程-----文件操作(1) 通过系统调用简单操作标准输入、标准输出、标准错误