ungetwc函数
概要:
#include <stdio.h> #include <wchar.h> wint_t ungetwc(wint_t c, FILE *stream);
描述:
该函数将参数c指定的宽字符推回参数stream指向的输入流。通过后续从输入流中读取输入,推回的宽字符将按推回顺序逆序返回。成功调用文件位置函数(例如:fseek、fsetpos、rewind函数。)将会丢弃推回输入流的宽字符。通过调用ungetwc函数将宽字符推回输入流,会影响流的内部缓冲;但不会改变与流相关联的外部文件的内容。
使用ungetwc函数推回一个宽字符是有保证的,即使ungetwc函数的调用紧跟在格式化宽字符输入函数(例如:fwscanf、vfwscanf、vwscanf或者wscanf函数)的调用之后。如果未对流进行读取操作或者文件定位操作,对同一输入流多次调用ungetwc函数,操作可能会失败。
如果参数c的值等于宏WEOF,操作会失败,并且输入流保持不变。
成功调用ungetwc函数会清除流的文件末尾指示符(end-of-file indicator)。流的文件位置指示符(file position indicator)在读取或者丢弃所有推回宽字符后与推回宽字符前相同。对于文本流或者二进制流,成功调用ungetwc函数后文件位置指示符是不明确的,直至所有的推回宽字符被读取或者被丢弃。
参数:
wint_t c
推回流中的宽字符。推回时,会转换为wchar_t类型。
FILE *stream
指向推回宽字符的输入流的指针。
返回值:
如果调用成功,函数返回推回输入流的宽字符;如果调用失败,函数返回WEOF。
范例:
|
|
结果:
假设文件gch.txt的内容为:
#第一名
#第二名
#第三名
将输出:
*第一名
*第二名
*第三名
程序执行后,文件gch.txt的内容没有发生改变,仍然为:
#第一名
#第二名
#第三名
注:使用Visual Studio编译。这里文本文件使用ANSI编码;ANSI编码详细介绍请查阅百度百科。
相关内容:
fgetws | 从输入流读取宽字符串的函数。 |
getwc | 从输入流读取宽字符的函数。 |
getwchar | 从标准输入流读取宽字符的函数。 |
fgetwc | 从输入流读取宽字符的函数。 |