Các lỗi thường gặp khi thao tác file:
- Đọc vượt quá cuối file.
- Thiết bị đầy (overflow).
- Mở file không hợp lệ.
- Thao tác sai chế độ (mode) file.
Hàm xử lý lỗi
ferror()perror()feof()
ferror()
Phát hiện lỗi khi đọc/ghi.
int ferror(FILE *fp);
Trả về 0 nếu thành công, khác 0 nếu lỗi.
if (ferror(fp)) printf("Loi xay ra");
perror()
In thông báo lỗi ra màn hình.
perror("Chuoi mo ta");
Xuất: Chuoi mo ta: ma_loi
Chương trình minh họa ferror & perror
#include <stdio.h>
int main() {
FILE *fp;
char str[30] = "Loi la";
int i = 20;
fp = fopen("sample.txt", "r"); // mo de doc
if (fp == NULL) {
printf("File khong ton tai");
} else {
fprintf(fp, "%d", i); // ghi vao file read-only -> loi
if (ferror(fp)) {
perror(str);
printf("Co loi\n");
}
fclose(fp);
}
return 0;
}
feof()
Kiểm tra đã đến cuối file (EOF) chưa.
int feof(FILE *fp);
Trả về khác 0 nếu đã hết file, 0 nếu chưa.
Chương trình minh họa feof
#include <stdio.h>
int main() {
FILE *fp;
int i, n;
fp = fopen("number.txt", "w");
for (i = 0; i <= 100; i += 10)
putw(i, fp);
fclose(fp);
fp = fopen("number.txt", "r");
printf("Noi dung file: ");
while (1) {
n = getw(fp);
if (feof(fp)) {
printf("\nDa het file.");
break;
}
printf("%d ", n);
}
fclose(fp);
return 0;
}
Kết quả
Noi dung file: 0 10 20 30 40 50 60 70 80 90 100 Da het file.