Chương 5: LẬP TRÌNH TẬP TIN

1. Tổng quan về lập trình trên tập tin 2. Các thao tác trên tập tin văn bản

a. Tạo tập tin văn bản b. Mở tập tin văn bản c. Thêm dữ liệu vào tập tin văn bản 3. Các thao tác trên tập tin nhị phân

4. Xử lý tập tin gồm nhiều mẩu tin a. Tạo / Mở tập tin gồm các mẩu tin b. Thêm mẩu tin vào tập tin có sẵn c. Thao tác đọc ghi phức hợp

Tạo / Mở / Thêm

1.Tổng quan về lập trình trên tập tin

Trong lập trình, chúng ta không chỉ giải quyết bài toán mà còn phải thực hiện một số thao tác khác với dữ liệu như đưa dữ liệu từ bộ nhớ ngoài vào, lưu dữ liệu ra bộ nhớ ngoài… Như vậy, một số thao tác cần thực hiện khi giao tiếp với bộ nhớ ngoài như mở, đóng đối với tập tin, đọc, ghi, sửa, lưu dữ liệu. Theo cấu tạo của bộ nhớ ngoài, (cấu tạo đĩa, sector), các thao tác ghi, xóa chỉnh sửa dẫn tới có thể phải thay đổi, di dời một số bye. Ngoài việc cấu trúc tập tin tổ chức tự động, người lập trình cũng cần can thiệp và định vị vị trí để lưu, sửa… Lập trình tập tin ta dùng biến con trỏ FILE * để tham chiếu tới các tập tin Các loại tập tin lưu dữ liệu bao gồm tập tin văn bản và tập tin nhị phân

a. Giới thiệu

1.Tổng quan về lập trình trên tập tin b. Tập tin văn bản

Là tập tin dùng để lưu các dòng văn bản.

– – Mỗi tập tin văn bản có thể gồm nhiều dòng và mỗi

dòng chúng được ngăn cách bởi $0A.

– Kết thúc tập tin là $1A. Trường hợp phía sau ký tự kết thúc mà còn dữ liệu thì dữ liệu đó được coi như rác. – Một số tập tin tạo từ DOS, notepad… là các tập tin

văn bản c. Tập tin nhị phân

Là các loại tập tin còn lại bao gồm các tập tin có đuôi exe, com, các tập tin hình ảnh, văn bản…

– Các tập tin đươc tạo ra từ phần mềm nào thì được nhận biết từ phần mềm đó và công ty sở hữu phần mềm có quyền công bố cấu trúc của tập tin hay không.

2. Các thao tác trên tập tin văn bản

a. Tạo tập tin văn bản

– Dùng hàm fopen với tùy chọn “wt” để tạo tập tin

Cú pháp: fp = fopen(char *ten, “wt”) trong đó fp là con trỏ tập tin; ten là tên và đường dẫn tới địa chỉ cần lưu trên bộ nhớ ngoài;

mới. • • •

– Hàm fprintf ghi dữ liệu là hằng hay biến bộ nhớ vào

Cú pháp: fprintf(fp, s) hoặc fprintf (fp, “hằng”) trong đó fp là con trỏ tập tin s là biến bộ nhớ

tập tin • • •

– Hàm fclose (fp) cho phép đóng tập tin.

2. Các thao tác trên tập tin văn bản

b. Mở (đọc) tập tin văn bản

– Hàm fopen để mở với tùy chọn “rt” – Hàm fgets để đọc dữ liệu từ tập tin vào biến

bộ nhớ theo cú pháp: •

fgets(bien, sokt, fp) trong đó – bien: là biến bộ nhớ – sokt: là số ký tự tối đa cho mỗi lần đọc – fp: là con trỏ FILE trỏ tới tập tin cần đọc

• Chú ý: Hàm feof(fp) cho biết đã kết thúc tập tin

– Hàm fclose(fp) để đóng tập tin lại.

được trỏ bởi con trỏ fp hay chưa.

2. Các thao tác trên tập tin văn bản

c. Thêm dữ liệu vào tập tin văn bản – Hàm fopen để mở với tùy chọn “at” – Hàm fprintf để ghi dữ liệu từ biến bộ nhớ

vào cuối tập tin

– Hàm fclose(fp) để đóng tập tin lại

3.Các thao tác trên tập tin nhị phân

a. Tạo tập tin nhị phân

– Dùng hàm fopen với tùy chọn “wb” để tạo tập tin

Cú pháp: fp = fopen(char *ten,”wb”) trong đó fp là con trỏ tập tin; ten là tên và đường dẫn tới địa chỉ cần lưu trên bộ nhớ ngoài;

mới. • • •

– Hàm fwrite ghi dữ liệu là hằng hay biến bộ nhớ vào

Cú pháp: fwrite(bien,size, n, fp) fp là con trỏ tập tin bien là biến bộ nhớ kiểu con trỏ size: là kích thước của biến n là số lượng

tập tin • • • • •

– Hàm fclose (fp) cho phép đóng tập tin.

2. Các thao tác trên tập tin nhị phân

b. Mở (đọc) tập tin nhị phân

– Hàm fopen để mở với tùy chọn “rb” – Hàm fread để đọc dữ liệu từ tập tin vào biến

bộ nhớ theo cú pháp: •

fread(bien,size,n,fp) trong đó – bien: là biến bộ nhớ kiểu con trỏ – size là kích thước biến – n là số phần tử – fp: là con trỏ FILE trỏ tới tập tin cần đọc – Hàm fclose(fp) để đóng tập tin lại.

3. Các thao tác trên tập tin nhị phân

c. Thêm dữ liệu vào tập tin nhị phân – Hàm fopen để mở với tùy chọn “ab” – Hàm fwrite để ghi dữ liệu từ biến bộ nhớ

vào cuối tập tin

– Hàm fclose(fp) để đóng tập tin lại

4. Xử lý tập tin gồm nhiều mẩu tin

a. Tạo / Mở tập tin gồm các mẩu tin – Tạo tập tin gọi hàm fopen(fp, “wb”) – Hàm fwrite để ghi dữ liệu là các cấu trúc từ biến bộ

nhớ ra tập tin

– Hàm fread để đọc dữ liệu từ bộ nhớ vào biến cấu

trúc

– Hàm fclose(fp) để đóng tập tin. b. Thêm mẩu tin vào tập tin có sẵn

– Để thêm mẩu tin vào tập tin gọi hàm fopen(fp,”ab”)

4. Xử lý tập tin gồm nhiều mẩu tin

c. Thao tác đọc ghi phức hợp

Trong trường hợp cần mở tập tin rồi thêm, sửa, lưu.. thì cần thực hiện các thao tác để xác định vị trí của mẩu tin với các hàm như sau: – Hàm fopen(fp, “r+b”) – Hàm ftell sẽ đánh dấu 1 vị trí của mẩu tin

vtri = ftell(pf);

– Hàm fseek để đưa đầu đọc/ghi đến mẩu tin thích

hợp theo cú pháp: fseek(fp, vtri, SEEK_SET)