#C 语言标准库函数 ungetc
/*********************************************
* @brief 向文件中放回一个字符
* @param ch 要放回的字符
* @param fp 文件流
* @return 放回的字符本身或 EOF
********************************************/
int ungetc(int ch, FILE* fp);
说明
将字符 ch
放回文件流 fp
中。通常用于预读输入后放回。
文件流位置指示器将会减一,如果已经在文件流开头,则会失败。
参数
ch
- 要放回的字符fp
- 要写的文件流
返回值
- 成功时返回返回的字符(参数
ch
本身) - 失败时返回
EOF
#示例
#include <stdio.h>
int main(void)
{
// 打开文件
FILE* fp = tmpfile();
if (fp == NULL)
{
perror("文件打开失败");
return 1;
}
// 写文件
fputs("ABCD", fp);
// 重置位置
rewind(fp);
// 读取文件
fgetc(fp);
fgetc(fp);
// 放回字符
ungetc('1', fp);
ungetc('2', fp);
// 读取并查看整个文件
for (int i = 0; i < 10; i += 1)
{
int ch = fgetc(fp); // 返回 int
if (ch == EOF) // 失败检查
break;
putchar(ch);
}
putchar('\n');
// 关闭文件
fclose(fp);
return 0;
}
运行结果:
21CD
#推荐阅读
- C 语言标准库函数 fread
- C 语言标准库函数 fwrite
- C 语言标准库函数 fgetc
- C 语言标准库函数 fgets
- C 语言标准库函数 fputs
- ungetc - cppreference
- ungetc - POSIX
#参考标准
- C23 standard (ISO/IEC 9899:2024):
- 7.21.7.10 The ungetc function (p: TBD)
- C17 standard (ISO/IEC 9899:2018):
- 7.21.7.10 The ungetc function (p: 243)
- C11 standard (ISO/IEC 9899:2011):
- 7.21.7.10 The ungetc function (p: 334)
- C99 standard (ISO/IEC 9899:1999):
- 7.19.7.11 The ungetc function (p: 300)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.9.7.11 The ungetc function