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

Kỹ thuật xử lý lỗi (Error Handling) trong C


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.