ungetc 或 ungetwc 子例程
用途
将字符推送回输入流中。
库
标准 C 库 (libc.a)
语法
描述
ungetc和ungetwc子程序将 Character参数指定的字符(在ungetc子程序中转换为无符号字符)插入与Stream参数指定的输入流相关联的缓冲区。 这将导致下一次调用getc或getwc子程序时返回字符值。 对文件定位子程序(fseek、fsetpos 或rewind)的成功调用(数据流由Stream参数指定)会丢弃数据流中插入的任何字符。 ungetc和ungetwc子程序会返回字符值,并保留 Stream参数指定的文件(外部存储形式)不变。
只要从数据流中读取了内容,或者调用了 setbuf子程序,就可以将一个字符推回到数据流中。 如果在同一数据流上调用ungetc或ungetwc子程序太多次,而中间又没有进行读取或文件定位操作,则操作可能不会成功。 fseek子程序会擦除所有已插入字符的内存。
如果无法插入字符,ungetc和ungetwc子程序会返回EOF或WEOF值。
成功调用ungetc或ungetwc子程序后,将清除Stream参数指定的数据流的文件结束符。 在读取或废弃所有插入的字符后,文件位置指示符的值与插入这些字符前的值相同。 每次成功调用ungetc或ungetwc子程序后,文件位置指示器的值都会降低。 如果它的值在调用之前是 0 ,那么它的值在调用之后是不确定的。
参数
| 项 | 描述 |
|---|---|
| 字符 | 指定字符。 |
| 流 | 指定输入流。 |
返回值
如果成功插入,ungetc和ungetwc子程序将返回插入的字符;否则将分别返回EOF或WEOF。