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).