×

Đọc một ký tự từ một tập tin đã mở với hàm fgetc() trong C

Khi làm việc với ngôn ngữ lập trình C, việc tiếp cận và quản lý tệp tin là một kỹ năng quan trọng. Một trong những hàm quan trọng giúp bạn đọc từng ký tự từ một tệp tin đã mở là hàm fgetc(). Hàm này rất hữu ích trong nhiều tình huống, chẳng hạn như khi bạn cần phân tích cú pháp tệp tin từng ký tự một hoặc khi bạn cần kiểm tra và xử lý nội dung tệp tin theo từng dòng.

Khởi đầu với việc mở tệp tin

Trước khi sử dụng hàm để đọc ký tự, bạn cần mở tệp tin với hàm fopen(). Hàm này trả về một con trỏ tệp tin (FILE pointer) mà bạn sẽ sử dụng trong các thao tác đọc/ghi.

#include <stdio.h>

int main() {
    FILE *file = fopen("filename.txt", "r");
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }
    // Code to read characters will go here
    fclose(file); // Don’t forget to close the file
    return 0;
}

Trong đoạn mã trên, hàm fopen() mở tệp tin "filename.txt" trong chế độ đọc ("r"). Nếu tệp tin không mở được, fopen() sẽ trả về NULL và ta có thể sử dụng perror() để in thông báo lỗi.

Sử dụng hàm đọc từng ký tự

Sau khi mở thành công tệp tin, chúng ta có thể sử dụng hàm để đọc từng ký tự từ tệp tin. Cú pháp của hàm rất đơn giản:

int fgetc(FILE *stream);

Hàm nhận vào một con trỏ tới tệp tin và trả về ký tự kế tiếp trong tệp tin dưới dạng số nguyên, hoặc EOF (End Of File) nếu đã đến cuối tệp tin hoặc xảy ra lỗi.

Dưới đây là một ví dụ cụ thể về cách sử dụng:

#include <stdio.h>

int main() {
    FILE *file = fopen("filename.txt", "r");
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }

    char c;
    while ((c = fgetc(file)) != EOF) {
        putchar(c); // In ký tự ra màn hình
    }

    fclose(file);
    return 0;
}

Trong đoạn mã trên, hàm while liên tục gọi fgetc() để đọc từng ký tự từ tệp tin cho đến khi gặp ký tự EOF. Hàm putchar(c) được dùng để in từng ký tự ra màn hình.

Kiểm tra lỗi khi đọc tệp tin

Đôi khi, bạn muốn kiểm tra xem liệu lỗi có xảy ra trong quá trình đọc hay không. Bạn có thể sử dụng các hàm như ferror()feof() để kiểm tra lỗi và trạng thái kết thúc tệp tin.

#include <stdio.h>

int main() {
    FILE *file = fopen("filename.txt", "r");
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }

    char c;
    while ((c = fgetc(file)) != EOF) {
        if (ferror(file)) {
            perror("Error reading file");
            clearerr(file); // Clear the error condition
            break;
        }
        putchar(c);
    }

    if (feof(file)) {
        printf("End of file reached.\n");
    }

    fclose(file);
    return 0;
}

Hàm ferror() trả về một giá trị khác 0 nếu có lỗi xảy ra trong lần gọi gần nhất, trong khi feof() trả về một giá trị khác 0 nếu đã đến cuối tệp tin.

Kết luận

Quản lý tệp tin trong C là một nhiệm vụ quan trọng và hàm fgetc() cung cấp cách thức hiệu quả để đọc tệp tin theo từng ký tự. Từ việc mở tệp tin, sử dụng và kiểm tra lỗi, bạn có thể điều khiển hoàn toàn quá trình đọc dữ liệu trong các ứng dụng của mình.

Comments