ungetc函数
概要:
#include <stdio.h> int ungetc(int c, FILE *stream);
描述:
该函数将参数c指定的字符转换为unsigned char类型,推回参数stream指向的输入流。通过后续从输入流中读取输入,推回的字符将按推回顺序逆序返回。成功调用文件位置函数(例如:fseek、fsetpos、rewind函数。)将会丢弃推回输入流的字符。通过调用ungetc函数将字符推回输入流,会影响流的内部缓冲;但不会改变与流相关联的外部文件的内容。
使用ungetc函数推回一个字符是有保证的。如果未对流进行读取操作或者文件定位操作,对同一输入流多次调用ungetc函数,操作可能会失败。
如果参数c的值等于宏EOF,操作会失败,并且输入流保持不变。
成功调用ungetc函数会清除流的文件末尾指示符(end-of-file indicator)。流的文件位置指示符(file position indicator)在读取或者丢弃所有推回字符后与推回字符前相同。对于文本流,成功调用ungetc函数后文件位置指示符的值是不明确的,直至所有推回字符被读取或者被丢弃。对于二进制流,每次成功调用ungetc函数,文件位置指示符将递减;如果调用ungetc函数前,文件位置指示符的值为0,调用ungetc函数后,文件位置指示符的值是不确定的。
参数:
int c
int类型整数,会转换为unsigned char类型。
FILE *stream
指向推回字符的输入流的指针。
返回值:
如果调用成功,函数返回转换后推回输入流的字符;如果调用失败,函数返回EOF。
范例:
|
|
结果:
假设文件gch.txt的内容为:
#first #second
#third
将输出:
$first $second
$third
注:程序执行后,文件gch.txt的内容保持不变,仍然为:
#first #second
#third
相关内容:
fgets | 从输入流读取字符串的函数。 |
getc | 从输入流读取字符的函数。 |
getchar | 从标准输入流读取字符的函数。 |
fgetc | 从输入流读取字符的函数。 |