1.Tổng quan xử lý tập tin

Trong tất cả các chương trình chúng tôi đã tạo từ loạt bài C căn bản cho đến nâng cao đều bị hạn chế ở việc chưa có sự thao tác đọc và ghi dữ liệu vào tệp.

Hầu hết các chương trình trong thực tế sẽ yêu cầu đọc và ghi dữ liệu vào tệp.

Tất cả các thao tác nhập/xuất trong C đều được thực hiện bằng các hàm trong thư viện chuẩn.

Trong bài này, chúng ta sẽ tìm hiểu căn bản cách thực hiện các thao tác nhập và xuất trong một tệp. Trong ngôn ngữ C, ta sẽ thao tác đọc ghi với file theo hai cách:

  1. Dạng văn bản.
  2. Dạng biễu diễn nhị phân.

2.Streams trong C

Hệ thống tập tin của C làm việc với nhiều thiết bị khác nhau như máy in, ổ đĩa, ổ băng từ,… Hệ thống tập tin có vùng đệm sẽ chuyển mỗi thiết bị về một thiết bị logic gọi là một stream. Mọi streams đều hoạt động tương tự việc quản lý các thiết bị khác nhau rất dễ dàng. Ta có 2 loại streams sau:

  1. Stream văn bản
  2. Stream nhị phân

2.1 Stream văn bản

Steam văn bản là một chuỗi các ký tự có thể được tổ chức thành các dòng và chúng kết thúc bằng một ký tự sang dòng mới “\n”.

Các ký tự được ghi (đọc) và các ký tự ở thiết bị ngoại vi có thể không tương ứng 1-1. Số lượng ký tự được ghi (hay đọc) có thể không giống như số lượng ký tự ở thiết bị ngoại vi.

2.2 Stream nhị phân

Steam nhị phân là một chuỗi các byte với sự tương ứng 1-1 với thiết bị ngoại vi (không có sự chuyển đổi ký tự). Số lượng byte đọc (ghi) giống số lượng byte ở thiết bị ngoại vi.

Sẽ không có bất kỳ ký hiệu nào dùng để chỉ ra điểm kết thúc của tập tin. Kết thúc của tập tin được xác định bằng kích thước của tập tin.

3.Tập tin (file) trong C

Một tập tin trong C hoàn toàn có thể thực hiện tham chiếu tới các tập tin ở ổ đĩa, các thiết bị đầu cuối, máy in…..

Khi thao tác với kiểu file ta thường có 2 hành động:

  1. Mở file: Kết nối tập tin với một stream.
  2. Đóng file: Ngắt kết nối tập tin với một stream.

Chú ý:

  • Khi chương trình kết thúc bình thường, tất cả tập tin đều kết thúc theo chương trình.
  • Khi chương trình kết thúc bất thường, tất cả tập tin đều chưa hoàn toàn kết thúc khi chương trình kết thúc.

4.Các hàm căn bản khi thao tác với tập tin (file) trong C

Dưới đây là một số hàm căn bản để thao tác với tập tin trong C. Cách sử dụng các hàm sẽ được nêu rõ hơn ở những bài tiếp theo. Việc bạn cần làm bây giờ là ghi nhớ tên hàm và chức năng của chúng!

Lưu ý: Để sử dụng được các hàm này ta cần thư viện <stdio.h>

Tên hàm Chức năng
fopen() Mở một tập tin
fclose() Đóng một tập tin
fputc() Ghi một ký tự vào tập tin
fgetc() Đọc một ký tự trong tập tin
fread() Đọc tập tin vào bộ nhớ đệm
fwrite() Ghi từ bộ nhớ đệm vào tệp tin
fputs() In một chuỗi vào tệp tin
fgets() Nhập một chuỗi vào tập tin
fprintf() In thông tin vào tệp (tương tự như hàm printf)
scanf() Nhập thông tin vào tệp (tương tự như hàm scanf)