如何检查C中输入缓冲区/流中的任何内容?

时间:2015-10-03 13:18:51

标签: c input stream buffer flush

我已经在这方面寻找了很多解决方案,但都没有满足我的需求。

我需要:

  1. 使用scanf()读取以空格分隔的两个整数。
  2. 如果只输入一个整数,我需要检查并清除缓冲区。
  3. 如果输入的整数超过2个,我需要检查并清除缓冲区。
  4. 到目前为止,我一直在使用getchar()来实现检查和清除。问题是如果缓冲区中没有任何内容,getchar()会等待一个字符。

    如何检查输入缓冲区/流中是否有任何内容?这样如果什么都没有,我不必用{{1}清除缓冲区}。

1 个答案:

答案 0 :(得分:2)

您不能使用标准C执行此操作 - 检查extradata_size缓冲区中的字符,如果不存在则立即返回

然而,我不认为这是真的需要。只需使用stdin读取一行,等待用户输入0或更多字符,然后输入,这会将fgets()放入'\n'。然后stdin将返回。

使用fgets()记录此时的扫描位置,并确保适当的空间分隔符并检测额外的垃圾。

"%n"