
- 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 程式設計資源
- C 程式設計 - 教程
- C - 有用資源
C 庫 - clearerr() 函式
C 庫的 clearerr(FILE *stream) 函式清除給定流的檔案結束和錯誤指示符。當您希望在發生錯誤或 EOF 條件後重置檔案流的狀態時,這很有用。
語法
以下是 C 庫 clearerr() 函式的語法:
void clearerr(FILE *stream);
引數
此函式僅接受一個引數:
- stream: 指向 FILE 物件的指標,指定要清除其錯誤指示符和 EOF 標誌的流。此 FILE 物件應由諸如 fopen 之類的函式事先開啟。
返回值
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>
廣告