📅  最后修改于: 2023-12-03 15:13:44.530000             🧑  作者: Mango
ungetc()
是指在读取流中的字符时将字符退回到流中。在大多数情况下,当我们从输入流中读取字符并因某种原因而不需要使用它时,ungetc()
函数将在其中派上用场。此函数可使我们将字符退回到缓冲区中,以便我们稍后能够在代码中再次使用它。
#include <stdio.h>
int main() {
int c;
FILE *fp = fopen("test.txt", "r");
if (fp == NULL) {
perror("Error opening file");
return -1;
}
c = getc(fp); // 读取文件中的第一个字符
printf("Read character '%c'\n", c); // 输出读取的字符
ungetc(c, fp); // 把字符退回到文件流中
c = getc(fp); // 再次读取文件中的第一个字符
printf("Read character again '%c'\n", c); // 输出再次读取的字符
fclose(fp);
return 0;
}
在上面的示例代码中,我们打开了名为 "test.txt" 的文件,并读取了文件中的第一个字符。然后我们使用 ungetc()
函数将该字符退回到文件流中,并再次使用 getc()
从文件流中读取字符。最后我们输出了第二次读取的字符。程序应该输出以下内容:
Read character 'H'
Read character again 'H'
注意,ungetc()
对于流缓冲区来说最多可以退回一个字符,而且只能回退我们刚刚读取的字符。
ungetc()
函数的语法如下所示:
int ungetc(int ch, FILE *stream);
此函数需要两个参数:
ch
:强制退回到流中的字符。stream
:指向要退回源自的流对象的指针。如果字符退回到流中,则此函数返回一个非负值,否则返回 EOF
。
在 C 和 C++ 中,ungetc()
函数是一个有用的库函数,用于使字符退回到输入流中。它可以帮助我们在编写代码时更加灵活地处理输入数据。