
- C 标准库
- C 库 - 首页
- C 库 - <assert.h>
- C 库 - <complex.h>
- C 库 - <ctype.h>
- C 库 - <errno.h>
- C 库 - <fenv.h>
- C 库 - <float.h>
- C 库 - <inttypes.h>
- C 库 - <iso646.h>
- C 库 - <limits.h>
- C 库 - <locale.h>
- C 库 - <math.h>
- C 库 - <setjmp.h>
- C 库 - <signal.h>
- C 库 - <stdalign.h>
- C 库 - <stdarg.h>
- C 库 - <stdbool.h>
- C 库 - <stddef.h>
- C 库 - <stdio.h>
- C 库 - <stdlib.h>
- C 库 - <string.h>
- C 库 - <tgmath.h>
- C 库 - <time.h>
- C 库 - <wctype.h>
- C 标准库资源
- C 库 - 快速指南
- C 库 - 有用资源
- C 库 - 讨论
C 库 - clearerr() 函数
C 库的 clearerr(FILE *stream) 函数清除给定流的文件结束和错误指示符。当您希望在发生错误或 EOF 条件后重置文件流的状态时,这很有用。
语法
以下是 C 库 clearerr() 函数的语法:
void clearerr(FILE *stream);
参数
此函数仅接受一个参数:
- stream: 指向 FILE 对象的指针,指定要清除其错误指示符和 EOF 标志的流。此 FILE 对象应由诸如 fopen 之类的函数事先打开。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
返回值
clearerr 函数不返回值。它是一个 void 函数,这意味着它执行其操作而不提供直接反馈。
示例 1:清除 EOF 标志
此示例读取文件内容直到到达 EOF,然后使用 clearerr 清除 EOF 标志,并确认 EOF 标志已被清除。
以下是 C 库 clearerr(FILE *stream) 函数的示例。
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "r"); if (file == NULL) { perror("Failed to open file"); return 1; } char ch; while ((ch = fgetc(file)) != EOF) { putchar(ch); } if (feof(file)) { printf("\nEOF reached.\n"); } clearerr(file); // Clear the EOF flag if (feof(file)) { printf("EOF still set.\n"); } else { printf("EOF cleared.\n"); } fclose(file); return 0; }
输出
以上代码产生以下结果:
<contents of example.txt> EOF reached. EOF cleared.
示例 2:重置流状态以重新读取
此示例读取文件内容直到到达 EOF,使用 clearerr 清除 EOF 标志,将文件倒回开头,并重新读取文件内容以表明流状态已成功重置。
#include <stdio.h> int main() { FILE *file = fopen("example.txt", "r"); if (file == NULL) { perror("Failed to open file"); return 1; } char ch; while ((ch = fgetc(file)) != EOF) { putchar(ch); } if (feof(file)) { printf("\nEOF reached.\n"); } clearerr(file); // Clear the EOF flag rewind(file); // Reset file position to the beginning printf("Re-reading the file:\n"); while ((ch = fgetc(file)) != EOF) { putchar(ch); } fclose(file); return 0; }
输出
执行以上代码后,我们得到以下结果:
<contents of example.txt> EOF reached. Re-reading the file: <contents of example.txt>
广告