😸

[C] feof 関数

に公開

機能

ファイルの終端 (EOF) に達したかどうかを判定する関数[1]

使用例

ファイルの終端です と表示する

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

コード

FILE *fp = fopen("test.txt", "r");
if (fp) {
    // ファイルの先頭では feof(fp) は 0
    while (!feof(fp)) {
        int c = fgetc(fp);
        if (c == EOF) {
            if (feof(fp)) {
                printf("ファイルの終端です\n");
            }
            break;
        }
    }
    fclose(fp);
}
全文
#include <stdio.h>
void main() {
    FILE *fp = fopen("test.txt", "r");
    if (fp) {
        // ファイルの先頭では feof(fp) は 0
        while (!feof(fp)) {
            int c = fgetc(fp);
            if (c == EOF) {
                if (feof(fp)) {
                    printf("ファイルの終端です\n");
                }
                break;
            }
        }
        fclose(fp);
    }
}

実行結果

ファイルの終端です

EOF に到達しました を変数から表示する

コード

FILE *fp = fopen("test.txt", "r");
char msg[] = "EOF に到達しました\n";
if (fp) {
    while (fgetc(fp) != EOF);
    if (feof(fp)) {
        printf("%s", msg);
    }
    fclose(fp);
}
全文
#include <stdio.h>
void main() {
    FILE *fp = fopen("test.txt", "r");
    char msg[] = "EOF に到達しました\n";
    if (fp) {
        while (fgetc(fp) != EOF);
        if (feof(fp)) {
            printf("%s", msg);
        }
        fclose(fp);
    }
}

実行結果

EOF に到達しました
脚注
  1. feof はストリームが EOF インジケータをセットした状態か調べる。データが無くなったわけではなく、直前の入出力操作で EOF に達したかを表す。 ↩︎

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

Discussion