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
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
Đọc tập tin văn bản
char mssv[10]; char name[30];
#include
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
Đọc tập tin nhị phân