Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

EOF, getc() và feof() trong C

EOF (End Of File)

Hằng số EOF (thường = -1) báo hiệu hết file hoặc lỗi đọc. getc() trả về EOF khi hết file.

Ví dụ đọc file với EOF

#include <stdio.h>

int main() {
    FILE *f = fopen("new.txt", "r");
    if (!f) { perror("Loi mo file"); return 1; }
    
    int c = getc(f);
    while (c != EOF) {
        putchar(c);
        c = getc(f);
    }
    fclose(f);
    return 0;
}

File new.txt: This is demo! This is demo!

Kết quả

This is demo! This is demo!

getc()

Đọc 1 ký tự từ stream. Trả về int (ký tự) hoặc EOF.

int getc(FILE *stream);

feof()

Kiểm tra cờ end-of-file trên stream. Trả về khác 0 nếu đã hết file, 0 nếu chưa. Dùng sau khi đọc trả về EOF để phân biệt EOF do hết file hay do lỗi.

int feof(FILE *stream);

Ví dụ feof()

#include <stdio.h>

int main() {
    FILE *f = fopen("new.txt", "r");
    if (!f) { perror("Loi mo file"); return 1; }
    
    int c = getc(f);
    while (c != EOF) {
        putchar(c);
        c = getc(f);
    }
    
    if (feof(f))
        printf("\nDa doc het file.");
    else
        printf("\nLoi doc file.");
    
    fclose(f);
    return 0;
}

Kết quả

This is demo! This is demo!
Da doc het file.
Mẫu đọc file chuẩn:
int c;
while ((c = getc(f)) != EOF) {
    // xu ly c
}
if (ferror(f)) { /* xu ly loi */ }
Không dùng feof() làm điều kiện vòng lặp (sai pattern thường gặp).