Linux程序设计 清空标准输入缓冲区
2014-04-25 14:51
363 查看
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系统编程_4_标准I/O(附:清空缓冲区方法)
- c语言:C语言清空输入缓冲区在标准输入(stdin)情况下的使用
- LINUX中清空输入缓冲区最简便的方法!
- Linux 中C语言如何清空标准输入流
- linux程序设计——把管道用作标准输入和输出(第十三章)
- c语言:C语言清空输入缓冲区在标准输入(stdin)情况下的使用
- Linux下标准缓冲区的清空
- Linux下如何清空输入缓冲区
- linux标准输出输入和错误输出
- C语言清空输入缓冲区的N种方法对比
- Linux基础之标准输入和输出
- Linux 标准输入输出及重定向
- C语言清空输入缓冲区的N种方法对比
- Linux下清空键盘缓冲区的一种好方法!
- 夺命雷公狗---linux NO:13 linux标准输入输出和标准错误
- C 清空输入缓冲区,以及fflush(stdin)的使用误区和解决方法
- C语言清空输入缓冲区的N种方法对比
- 清空输入缓冲区的方法
- 清空输入缓冲区fflush()
- 你还在用fflush(stdin);清空输入缓冲区吗?