Kỹ thuật lập trình - File pdf

5 479 0
Kỹ thuật lập trình - File pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

Chương 6 Tệp tin (file) Đặt vấn đề  Các CTDL đã khảo sát có cùng 1 đặc tính đó là được lưu trữ ở bộ nhớ trong (RAM), do đó dữ liệu sẽ mất khi kết thúc chương trình.  Cần có một cách tổ chức lưu trữ dữ liệu lâu dài, đó là trên bộ nhớ ngoài (disk, tape, ).  Trên bộ nhớ ngoài dữ liệu được tổ chức thành các tệp tin (file). Đặt vấn đề (tt) Mảng Tệp RAM DISK Logic View Tệp và con trỏ tệp  Vì t ệ p là CTDL trên b ộ nh ớ ngoài (BNN) nên v ớ i các thi ế t b ị khác nhau có cách t ổ ch ứ c l ư u tr ữ v ậ t lý khác nhau. Điề u này gây tr ở ng ạ i cho ch ươ ng trình khi mu ố n truy xu ấ t t ệ p (vì nó c ầ n ph ả i bi ế t nó đang l àm vi ệ c v ớ i thi ế t b ị gì, theo cách nh ư th ế nào ).  Để kh ắ c ph ụ c, C xây d ự ng đố i t ượ ng “dòng” ( stream). Ch ươ ng trình ch ỉ làm vi ệ c v ớ i các dòng, ph ầ n còn l ạ i (t ươ ng tác gi ữ a “dòng” v ớ i file v ậ t lý đượ c x ử lý s ẵ n). V ớ i cách làm nh ư v ậ y vi ệ c truy xu ấ t file tr ở nên độ c l ậ p v ớ i các thi ế t b ị v ậ t lý.  Để qu ả n lý các dòng làm vi ệ c v ớ i file C cung c ấ p m ộ t con tr ỏ ki ể u FILE tr ỏ đế n vùng đệ m d ữ li ệ u (buffer) c ủ a “dòng”. Tệp và con trỏ tệp (tt)  Khai báo con trỏ file:  Ví dụ: FILE *<tên con trỏ>; FILE *f, *g;//g và f là 2 con trỏ FILE Tệp và con trỏ tệp (tt)  Qui ước: - Khi mở file để đọc dữ liệu, con trỏ file trỏ đến phần tử đầu tiên của file (phần tử thứ 0). - Mỗi file có một điểm kết thúc file EOF (end of file). - Sau mỗi thao tác truy xuất dữ liệu, con trỏ file tự động dịch chuyển đến phần tử kế tiếp. EOF f File Phần loại file  Ở m ứ c độ v ậ t lý m ọ i file đề u nh ư nhau, đề u là dãy các byte trên b ộ nh ớ ngoài.  Để d ễ thao tác, ở m ứ c độ logic C chia ra 2 lo ạ i file: v ă n b ả n và nh ị phân.  File v ă n b ả n (text): - d ữ li ệ u đượ c l ư u ở d ạ ng mã ASCII. - d ấ u hi ệ u k ế t thúc file EOF có mã là 26.  File nh ị phân (binary): - d ữ li ệ u đượ c l ư u ở d ạ ng các byte nh ị phân (không quan tâm đế n ki ể u d ữ li ệ u mà các byte đ ó bi ể u di ễ n). - d ấ u hi ệ u k ế t thúc file EOF = -1. Truy xuất file  Các hàm dùng chung cho cả hai loại file:  Hàm mở file:  Ví dụ: Truy xuất file (tt)  Hàm đóng file:  Hàm kiểm tra kết thúc file: Truy xuất file (tt)  Hàm xóa file:  Đọc dữ liệu:  Ghi dữ liệu: Truy xuất file (tt) #include <stdio.h> #include <conio.h> void docFile() { FILE *f; char ch; if((f=fopen("d:\\baigiang\\oop\\dulieu.txt","rt"))==NULL) { printf("\nloi mo file"); return; } while((ch=fgetc(f))!=EOF) printf("%c",ch); fclose(f); } void main() { docFile(); } Ví dụ 1 Truy xuất file văn bản  Đối với file văn bản có các cách truy xuất sau: - T/X có định dạng: fprintf, fscanf. - T/X chuỗi ký tự: fgets, fputs. (tự đọc)  Hàm fprintf: Truy xuất file văn bản (tt)  Ví dụ:  Hàm fscanf: Truy xuất file văn bản (tt) void docfile(int a[], int *n) { FILE *f; f=fopen("D:\\dulieu.txt","rt"); if(!f) { printf("\nkhong mo duoc file");getch(); return; } *n=0; while(fscanf(f,"%d",&a[*n])!=EOF)++(*n); fclose(f); } Hàm đọc dữ liệu từ file “dulieu.txt” vào mảng a Truy xuất file nhị phân  Đối với file nhị phân có các cặp hàm t/x sau:  getw / putw (tự đọc)  fread / fwrite  Hàm fread: Truy xuất file nhị phân (tt)  Hàm fwrite: Truy xuất file nhị phân (tt)  Hàm ftell: Truy xuất file nhị phân (tt) . trỏ FILE Tệp và con trỏ tệp (tt)  Qui ước: - Khi mở file để đọc dữ liệu, con trỏ file trỏ đến phần tử đầu tiên của file (phần tử thứ 0). - Mỗi file có một điểm kết thúc file EOF (end of file) . - Sau. di ễ n). - d ấ u hi ệ u k ế t thúc file EOF = -1 . Truy xuất file  Các hàm dùng chung cho cả hai loại file:  Hàm mở file:  Ví dụ: Truy xuất file (tt)  Hàm đóng file:  Hàm kiểm tra kết thúc file: Truy. lo ạ i file: v ă n b ả n và nh ị phân.  File v ă n b ả n (text): - d ữ li ệ u đượ c l ư u ở d ạ ng mã ASCII. - d ấ u hi ệ u k ế t thúc file EOF có mã là 26.  File nh ị phân (binary): - d ữ li ệ u

Ngày đăng: 05/07/2014, 12:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan