Tài liệu học lập trình c cho người khiếm thị
  • 1. LỜI NÓI ĐẦU
    • Lời nói đầu
  • 2. BÀI HỌC LÝ THUYẾT
    • Bài 1. Giới thiệu về ngôn ngữ lập trình C
    • Bài 2. Cài đặt môi trường và viết chương trình đầu tiên
    • Bài 3. Biến và kiểu dữ liệu
    • Bài 4. Toán tử và biểu thức
    • Bài 5. Nhập và xuất trong C
    • Bài 6. Câu lệnh điều kiện rẽ nhánh
    • Bài 7. Vòng lặp
    • Bài 8. Mảng
    • Bài 9. Con trỏ
    • Bài 10. Hàm
    • Bài 11. Chuỗi
    • Bài 12. Các kiểu dữ liệu nâng cao và thuật toán sắp xếp
    • Bài 13. Quản lý tập tin
  • Bài tập nhỏ
    • Bài tập 1: Biến và kiểu dữ liệu
    • Bài tập 2: Toán tử và biểu thức
    • Bài tập 3: Nhập và xuất trong C
    • Bài tập 4: Câu lệnh điều kiện
    • Bài tập 5: Vòng lặp
    • Bài tập 6: Mảng
    • Bài tập 7: Con trỏ
    • Bài tập 8: Hàm
    • Bài tập 9: Chuỗi
    • Bài tập 10: Dữ liệu nâng cao và sắp xếp
    • Bài tập 11: Quản lý tập tin
  • Bài tập lớn
    • Bài tập 1: Quản lý sinh viên
    • Bài tập 2: Phần mềm quản lý thư viện
    • Bài tập 3: Chương trình quản lý danh bạ
  • 4. VÍ DỤ MINH HỌA
    • Ví dụ 1: Chương trình Hello World
    • Ví dụ 2: Máy tính đơn giản
    • Ví dụ 3: Kiểm tra số nguyên tố
    • Ví dụ 4: Đọc và ghi file trong C
    • Ví dụ 5: Sử dụng con trỏ trong C
    • Ví dụ 6: Quản lý sinh viên sử dụng struct
    • Ví dụ 7: Sắp xếp mảng bằng thuật toán Bubble Sort
    • Ví dụ 8: Đọc ghi file CSV
    • Ví dụ 9: Duyệt mảng bằng con trỏ
    • Ví dụ 10: Quản lý bộ nhớ động
    • Ví dụ 11: Sử dụng vòng lặp để xử lý dữ liệu
    • Ví dụ 12: Xử lý chuỗi bằng thư viện string.h
    • Ví dụ 13: Cấu trúc dữ liệu nâng cao
  • 5. PHỤ LỤC
    • phần I. Các hàm chuẩn trong thư viện C
    • phần II. Cấu trúc dữ liệu trong C
    • Phần III: Thuật toán cơ bản
    • Phần IV: Thuật ngữ lập trình
  • 6. THÔNG TIN TÀI LIỆU
    • thông tin tài liệu
Powered by GitBook
On this page
  • I: Mục tiêu bài học:
  • II: Nội dung bài học:
  • 1. Khái niệm về tập tin trong C
  • 2. Các thao tác cơ bản với tập tin
  • 3. Tập tin nhị phân
  • 4. Xóa và đổi tên tập tin
  • 5. Lưu ý cho người khiếm thị
  • 6. Tóm tắt bài học
  • 7. Kết nối với bài tiếp theo
  1. 2. BÀI HỌC LÝ THUYẾT

Bài 13. Quản lý tập tin

I: Mục tiêu bài học:

  • Hiểu được khái niệm tập tin và vai trò của quản lý tập tin trong lập trình C.

  • Biết cách mở, đọc, ghi và đóng tập tin.

  • Thành thạo sử dụng các hàm thao tác với tập tin trong thư viện chuẩn của C.

  • Ứng dụng quản lý tập tin vào bài toán thực tế.

II: Nội dung bài học:

1. Khái niệm về tập tin trong C

Trong lập trình C, tập tin (file) là một cách lưu trữ dữ liệu bên ngoài bộ nhớ chính để có thể truy xuất và xử lý sau này. Việc thao tác với tập tin giúp chương trình có thể lưu trữ dữ liệu một cách lâu dài thay vì chỉ tồn tại trong bộ nhớ RAM.

C có hai loại tập tin chính:

  • Tập tin văn bản (Text file): Chứa dữ liệu ở dạng ký tự có thể đọc được.

  • Tập tin nhị phân (Binary file): Chứa dữ liệu ở dạng mã hóa, khó đọc trực tiếp bằng trình soạn thảo văn bản.

2. Các thao tác cơ bản với tập tin

2.1. Mở tập tin

Để mở một tập tin trong C, chúng ta sử dụng hàm fopen() với cú pháp:

FILE *ptr = fopen("ten_tap_tin", "che_do");

Các chế độ mở tập tin phổ biến:

Chế độ
Mô tả

"r"

Mở tập tin chỉ để đọc, nếu tập tin không tồn tại sẽ báo lỗi.

"w"

Mở tập tin để ghi, nếu tập tin tồn tại, nội dung sẽ bị xóa.

"a"

Mở tập tin để ghi vào cuối tập tin, nếu không tồn tại sẽ tạo mới.

"rb", "wb", "ab"

Tương tự các chế độ trên nhưng dành cho tập tin nhị phân.

Ví dụ mở một tập tin văn bản để đọc:

FILE *file = fopen("data.txt", "r");
if (file == NULL) {
    printf("Không thể mở tập tin!\n");
    return 1;
}

2.2. Đọc dữ liệu từ tập tin

Có nhiều cách để đọc dữ liệu từ tập tin:

  • fgetc(file): Đọc từng ký tự từ tập tin.

  • fgets(buffer, size, file): Đọc một dòng từ tập tin.

  • fscanf(file, "format", &variable): Đọc dữ liệu theo định dạng.

Ví dụ:

char buffer[100];
FILE *file = fopen("data.txt", "r");
if (file) {
    while (fgets(buffer, 100, file)) {
        printf("%s", buffer);
    }
    fclose(file);
}

2.3. Ghi dữ liệu vào tập tin

Các hàm phổ biến để ghi dữ liệu:

  • fputc(ch, file): Ghi một ký tự vào tập tin.

  • fputs(str, file): Ghi một chuỗi vào tập tin.

  • fprintf(file, "format", values): Ghi dữ liệu theo định dạng.

Ví dụ:

FILE *file = fopen("output.txt", "w");
if (file) {
    fprintf(file, "Xin chào!\n");
    fclose(file);
}

2.4. Đóng tập tin

Sau khi hoàn thành công việc với tập tin, chúng ta cần đóng nó bằng hàm fclose(file); để giải phóng tài nguyên.

fclose(file);

3. Tập tin nhị phân

Tập tin nhị phân lưu trữ dữ liệu theo dạng bit, thường được sử dụng để lưu trữ cấu trúc dữ liệu phức tạp như mảng, cấu trúc, v.v.

3.1. Đọc và ghi tập tin nhị phân

Sử dụng fread() và fwrite() để thao tác với tập tin nhị phân:

fwrite(&bien, sizeof(loai_du_lieu), so_phan_tu, file);

Ví dụ ghi và đọc một cấu trúc vào tập tin nhị phân:

struct Student {
    char name[50];
    int age;
};

FILE *file = fopen("students.dat", "wb");
struct Student s = {"Nguyen Van A", 20};
if (file) {
    fwrite(&s, sizeof(struct Student), 1, file);
    fclose(file);
}

file = fopen("students.dat", "rb");
if (file) {
    fread(&s, sizeof(struct Student), 1, file);
    printf("%s %d\n", s.name, s.age);
    fclose(file);
}

4. Xóa và đổi tên tập tin

Cung cấp các thao tác nâng cao:

  • Xóa tập tin: remove("ten_tap_tin");

  • Đổi tên tập tin: rename("ten_cu.txt", "ten_moi.txt");

Ví dụ:

if (remove("oldfile.txt") == 0)
    printf("Xóa tập tin thành công\n");
else
    printf("Xóa tập tin thất bại\n");

5. Lưu ý cho người khiếm thị

  • Khi làm việc với tập tin, hãy chắc chắn sử dụng thông báo lỗi rõ ràng để dễ dàng nhận biết lỗi qua trình đọc màn hình.

  • Định dạng đầu ra một cách có hệ thống để dễ đọc hơn, tránh quá nhiều thông tin không cần thiết.

  • Đối với tập tin văn bản, hãy đảm bảo mã hóa phù hợp để trình đọc màn hình có thể đọc được.

6. Tóm tắt bài học

  • Tập tin giúp lưu trữ dữ liệu lâu dài thay vì chỉ trong bộ nhớ RAM.

  • Có hai loại tập tin chính: văn bản và nhị phân.

  • Các thao tác cơ bản gồm mở, đọc, ghi và đóng tập tin.

  • Sử dụng fopen(), fgetc(), fputs(), fclose(), fwrite(), fread() để thao tác với tập tin.

  • Có thể đổi tên và xóa tập tin bằng rename() và remove().

7. Kết nối với bài tiếp theo

Vậy là chúng ta đã kết thúc hành trình khám phá lập trình C với bài cuối cùng về quản lý tập tin. Bây giờ, bạn có thể áp dụng tất cả các kiến thức đã học để viết các chương trình hoàn chỉnh và thực tế hơn. Hãy tiếp tục với các bài tập thực hành để củng cố kiến thức của mình!

Chúc bạn thành công!

PreviousBài 12. Các kiểu dữ liệu nâng cao và thuật toán sắp xếpNextBài tập 1: Biến và kiểu dữ liệu

Last updated 2 months ago