TẬP TIN VĂN BẢN – TẬP TIN NHỊ PHÂN

1. Phân loại

Tập tin là hình thức lưu trữ phổ biến trên bộ nhớ phụ, gồm 2 loại:

(cid:216) Tập tin văn bản: là tập tin chỉ lưu trữ thuần túy văn bản, trong đó các kí tự

được biểu diễn bằng mã ASCII của nó, người dùng có thể đọc được.

Tính chất:

§ Dễ truy xuất và xử lí

§ Độ bảo mật kém

§ Tốc độ truy xuất kém

§ Kích thước lớn.

- Vd: L ưu số nguyên 12345 ở dạng binary (2 byte) và d ạng

chuỗi (5 byte).

Các dạng thường gặp:

§ Tập tin cấu hình: *.INI, *.CFG

§ *.TXT, *.HTML, *.XML

(cid:216) Tập tin nh ị phân: là tập tin ch ứa dữ liệu mà có ít nh ất một vài chu ỗi bit

không th ể bi ểu di ễn ở dạng văn bản tr ơn, do đó tập tin này ch ỉ có máy đọc

được còn người dùng không đọc được.

Tính chất:

§ Truy xuất và xử lí phức tạp hơn

§ Tốc độ truy xuất nhanh

§ Tính bảo mật cao hơn

Các dạng thường gặp:

§ Các tập tin có cấu trúc tự định nghĩa

§ *.DOC, *XLS, *PDF, *PPT

§ *.JPG, *.PCX, *.BMP,*.TIF

§ *.MP3, *.WA V, *.AVI,…

GVHDTH: Nguyễn Ngọc Thảo

2. Một số hàm xử lí chung cho cả hai dạng tập tin (xem MSDN)

Chức năng Tên hàm

Mở tập tin theo kiểu văn bản hoặc nhị phân fopen

Đóng tập tin fclose

Đóng tất cả các tập tin fcloseall

Làm sạch vùng đệm của một tập tin đang mở fflush

Làm sạch vùng đệm của tất cả các tập tin đang mở fflushall

remove/unlink Xóa tập tin

3. Một số hàm xử lí dùng cho tập tin văn bản (xem MSDN)

Tên hàm Chức năng

Mở tập tin theo kiểu văn bản hoặc nhị phân fopen

Đóng tập tin fclose

Đóng tất cả các tập tin fcloseall

Ghi giá trị dạng text lên tập tin fprintf

Đọc giá trị dạng text từ tập tin fscanf

Làm sạch vùng đệm của một tập tin đang mở fflush

Làm sạch vùng đệm của tất cả các tập tin đang mở fflushall

remove/unlink Xóa tập tin

Ghi lên tập tin một kí tự (sử dụng trong tập tin văn bản hoặc nhị putc/fputc

phân có khác biệt)

Đọc từ tập tin một kí tự (sử dụng trong tập tin văn bản hoặc nhị getc/fgetc

phân có khác biệt)

4. Một số hàm xử lí dùng cho tập tin nhị phân (xem MSDN)

Tên hàm Chức năng

Ghi một số nguyên lên tập tin putw

Đọc một số nguyên từ tập tin getw

GVHDTH: Nguyễn Ngọc Thảo

Ghi các mẫu tin (có cấu trúc định trước) lên tập tin fwrite

Đọc các mẫu tin (có cấu trúc định trước) từ tập tin fread

Di chuyển con trỏ chỉ vị đến vị trí mong muốn fseek

Cho biết vị trí hiện tại của con trỏ chỉ vị ftell

5. Các ví dụ về đọc/ghi tập tin văn bản và nhị phân

printf("%3d", a[i]); fprintf(f,"%d\n",a[i]);

int a[10] = {10,9,8,7,6,5,4,3,2,1}; FILE *f = fopen("number_text.txt", "wt"); for (int i = 0; i < 10; i++) { } fclose(f);

#include void main() { }

Ghi tập tin văn bản

int a; FILE *f = fopen("number_text.txt", "rt");

// mở tập tin để đọc dạng text // kiểm tra đến cuối tập tin chưa

// đọc dữ liệu dạng text vào biến a

fscanf(f,"%d",&a); printf("%3d", a);

{ } fclose(f);

// đóng tập tin sau khi làm xong

#include void main() { while (!feof(f)) }

Đọc tập tin văn bản

char mssv[10]; char name[30];

#include typedef struct { }SV;

Ghi tập tin nhị phân

GVHDTH: Nguyễn Ngọc Thảo

printf("Nhap MSSV: "); gets(arr[i].mssv); printf("Nhap ten: "); gets(arr[i].name);

int i; SV arr[5]; FILE *f = fopen("number_binary.bin", "wb"); for (i = 0; i < 5; i++){ } for (i = 0; i < 5; i++)

fwrite(&arr[i], sizeof(SV), 1, f);

fclose(f);

void main() { }

char mssv[10]; char name[30];

fread(&arr[i], sizeof(SV), 1, f); printf("MSSV: %s\nHo ten: %s\n\n", arr[i].mssv, arr[i].name);

int i; SV arr[5]; FILE *f = fopen("number_binary.bin", "rb"); for (i = 0; i < 5; i++) { } fclose(f);

#include typedef struct { }SV; void main() { }

Đọc tập tin nhị phân

GVHDTH: Nguyễn Ngọc Thảo