😸

[C] ferror 関数

に公開

機能

ファイルストリーム上で入出力エラーが発生したかどうかを判定する関数[1]

使用例

ファイルにエラーが発生しました と表示する

\n は改行を表す エスケープシーケンス[2]

コード

FILE *fp = fopen("not_found.txt", "r");
if (fp == NULL) {
    printf("ファイルを開けません\n");
} else {
    int data = fgetc(fp);
    if (ferror(fp)) {
        printf("ファイルにエラーが発生しました\n");
    }
    fclose(fp);
}
全文
#include <stdio.h>
void main() {
    FILE *fp = fopen("not_found.txt", "r");
    if (fp == NULL) {
        printf("ファイルを開けません\n");
    } else {
        int data = fgetc(fp);
        if (ferror(fp)) {
            printf("ファイルにエラーが発生しました\n");
        }
        fclose(fp);
    }
}

実行結果

ファイルを開けません

入出力エラー検出 を変数から表示する

コード

FILE *fp = fopen("test.txt", "r");
if (fp != NULL) {
    // 擬似的にエラーを発生させる(例:誤った操作など)
    clearerr(fp);
    // ここでは ferror(fp) == 0 の場合
    if (ferror(fp)) {
        printf("入出力エラー検出\n");
    }
    fclose(fp);
}
全文
#include <stdio.h>
void main() {
    FILE *fp = fopen("test.txt", "r");
    if (fp != NULL) {
        // 擬似的にエラーを発生させる(例:誤った操作など)
        clearerr(fp);
        // ここでは ferror(fp) == 0 の場合
        if (ferror(fp)) {
            printf("入出力エラー検出\n");
        }
        fclose(fp);
    }
}

実行結果

(このコードの場合、何も表示されません)
脚注
  1. ファイル処理関数でエラーが起きた後、それを調べる標準関数。 ↩︎

  2. 改行やタブなど、画面に表示されない制御文字のこと。 ↩︎

Discussion