ungetc()是不是写入文件,而只是移动文件位置?

时间:2016-03-04 01:30:30

标签: c io

在标准C库中,ungetc()是否不写入文件?

它只会移动文件位置吗?

可以事先没有任何阅读使用吗?即它可以独立于其他IO功能使用吗?

是否可以在读取功能之后使用,这种功能不是一次一个字符,即一次只读取一个字符?

感谢。

1 个答案:

答案 0 :(得分:2)

ungetc是一个读取函数。它不做任何写作。该文件甚至可能无法写入。

事先你所做的并不重要。 ungetc函数仅影响将来的读取。

如果下一次读取是块读取,那么它将首先读取由ungetc推送的字符。

如果ungetc某些字符然后读取这些字符,文件位置指示器将返回到原来的位置。

虽然还有推迟的字符,但尚未阅读,但是:

  • 对于文本流,文件位置指示符为未指定
  • 对于二进制流,每个推回字符的1减去文件位置指示符;如果它试图从0返回,则变为不确定

如果您有任何其他问题,可以通过the C Standard中的ungetc说明回答: