Bài giảng Kỹ thuật lập trình - Chương 9: Tập tin - Trần Quang

Chương 09  
TẬP TIN  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
1
Tập tin (file)  
Tất cả các biến dữ liệu của chương trình được lưu  
trong bộ nhớ RAM của máy tính. Khi chương trì nh  
kết thúc, tất cả các biến này sẽ bị xóa đi.  
Để giữ các dữ liệu này lại khi chương trình kết  
thúc, ta cần lưu chúng dưới dạng tập tin (file) vào  
các thiết bị lưu trữ như ổ cứng, CD, DVD, v.v.  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
2
Mô hình tập tin  
Tập tin là một dãy các bytes dữ liệu kết thúc bằng  
ký tự đặc biệt EOF  
EOF (End Of File): là giá trị đặc biệt, không trùng  
với bất cứ giá trị của byte dữ liệu nào.  
EOF: khi dùng cá c hàm đọc dữ liệu trả về EOF là  
biết kết thúc tập tin.  
(Nhiều hệ thống EOF = -1)  
…
EOF  
1 2 3  
N
N bytes dữ liệu của một file  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
3
Các loại tập tin  
Tập tin văn bản (text)  
Các byte trong mô hình tập tin chứa các ký tự đọc  
được (có nghĩa) bởi con người  
Tập tin có thể mở ra để đọc và thay đổi bởi chương  
trình soạn thảo văn bản như NOTEPAD.  
Tập tin nhị phân (binary)  
Được tạo bởi chương trình nào đó, không dành cho  
con người đọc và hiểu trực tiếp bằng NOTEPAD  
Cá c tập tin này phải dùng chương trì nh dành riêng  
nào đó mới đọc và diễn dịch được. Ví dụ file .doc  
của MS Word, file ảnh .jpg, file thực thi .exe, …  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
4
Quy trình xử lý tập tin  
1. Khai bá o con trỏ tập tin  
2. Mở tập tin  
Dùng hàm: fopen  
3. Thao tác với tập tin  
Đọc hay ghi dữ liệu  
Mỗi lần đọc hay ghi dữ liệu, con trỏ đá nh dấu trong  
tập tin tự động tăng đến phần tử tiếp theo  
4. Đóng tập tin  
Dùng hàm fclose  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
5
Con trỏ đánh dấu trong tập tin  
N bytes dữ liệu của một file  
1 2 3  
N
…
EOF  
Sau khi mở tập tin thành công, con trỏ đánh dấu tự động  
chỉ đến byte đầu tiên của tập tin  
1 2 3  
N
…
EOF  
Sau khi đọc 1 byte dữ liệu, ví dụ sử dụng hàm fgetc()  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
6
Con trỏ đánh dấu trong tập tin  
1 2 3  
N
…
EOF  
Sau khi đã đọc xong N bytes,  
con trỏ đánh dấu chỉ đến EOF  
Lần đọc dữ liệu kế tiếp hàm đọc sẽ trả về  
giá trị EOF cho biết đã kết thúc tập tin  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
7
Khai báo con trỏ tập tin (FILE *)  
Biến (con trỏ) trong chương trình dùng để gꢀn kết  
với tập tin trên đĩa được định nghĩa với kiểu đặc  
biệt theo cú pháp sau:  
FILE *<tên biꢀn>  
Ví dụ: FILE *fp;  
Kiểu FILE là kiểu cấu trúc do C định nghĩa sẵn  
trong <stdio.h>  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
8
Mꢀ tập tin  
fopen (<filename>, <mode> );  
Ví dụ: FILE *fp;  
fp = fopen("c:\\test.txt", "r");  
filename là tên tập tin trên đĩa, chú ý dùng \\ trong  
đường dẫn  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
9
Chế độ mꢀ tập tin  
Chꢀ độ  
Mô tả  
r Mở tập tin để đọc.  
Mở tập tin để ghi. Nếu tập tin đã tồn tại, xóa toàn bộ  
nội dung tập tin đó.  
w
a
Nối tập tin. Mở tập tin đã có sẵn hoặc tạo mới tập tin,  
ghi vào cuối tập tin nếu đã tồn tại.  
Mở tập tin cho phép đọc lẫn ghi. Không tạo mới tập  
tin nếu tập tin chưa có sẵn.  
r+  
w+  
a+  
Mở tập tin cho phép đọc lẫn ghi. Tạo mới tập tin nếu  
tập tin chưa có sẵn.  
Nối tập tin, cho phép đọc tập tin. Mở tập tin đã có  
sẵn hoặc tạo mới tập tin, ghi vào cuối tập tin đó.  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
10  
Kiểm tra việc mꢀ tập tin  
FILE *fp;  
fp = fopen ("E:\\tmp\\vidu.txt", "r");  
if (fp == NULL)  
printf("Khong mo duoc file\n");  
else {  
// xử lý file  
}
if (fp == NULL) {  
printf("Khong mo duoc file\n");  
return;  
}
// xử lý file  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
11  
Đóng tập tin  
Cú phá p:  
int fclose (FILE *fp);  
Ví dụ:  
fclose(fp);  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
12  
Đọc 1 ký tự từ tập tin  
Cú phá p:  
int fgetc (FILE *fp);  
Ví dụ:  
char c;  
FILE *fp;  
fp = fopen ("E:\\tmp\\vidu.txt", "r");  
c = fgetc (fp);  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
13  
Hàm kiểm tra cuối tập tin  
Cú phá p:  
int feof (FILE *fp)  
Hàm trả về giá trị khác 0 nếu gặp cuối file khi đọc,  
trái lại hàm cho giá trị 0.  
Ví dụ:  
char c;  
FILE *fp;  
fp = fopen("E:\\tmp\\vidu.txt", "r");  
while ( !feof(fp) ) {  
c = fgetc(fp);  
printf("%c", c);  
}
Trần Quang  
© 2016  
Kỹ thuật lập trình  
14  
Chương 09:File  
Đọc tất cả các ký tự trong tập tin vào bộ đệm  
Giả sử buffer đủ lớn để chứa toàn bộ dữ liệu từ tập tin  
void readFile(FILE* fp, char* buffer){  
int i = 0;  
int ch = fgetc(fp);  
while(ch != EOF){  
CH = Đọc một ký tự  
buffer[i] = ch;  
ch = fgetc(fp);  
false  
CH <> EOF  
i += 1;  
true  
Đưa CH vào bộ đệm  
}
CH = Đọc một ký tự  
buffer[i] = '\0';  
}
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
15  
Ghi 1 ký tự vào tập tin  
Cú phá p:  
int fputc (char c, FILE *fp);  
Ví dụ:  
FILE *fp;  
fp = fopen ("E:\\tmp\\vidu2.txt", "w");  
fputc ('A', fp);  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
16  
Hàm fgets() – fputs()  
Cú phá p:  
char *fgets(char *str, int n, FILE *fp);  
Dùng để đọc 1 chuỗi từ file vào biến str, n là số ký tự  
tối đa sẽ đọc  
Hàm trả về con trỏ tới string đọc được nếu thành công  
Hàm trả về NULL nếu xảy ra lỗi hoặc gặp cuối file.  
Cú phá p:  
int fputs(const char *str, FILE *fp);  
Dùng để ghi 1 chuỗi vào file  
Hàm trả về giá trị không âm nếu ghi thành cô ng  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
17  
Chương 09:File  
fgets() – fputs()  
Ví dụ:  
char s[255];  
FILE *fp;  
printf ("Nhap vao 1 cau: ");  
fgets (s, 255, stdin);  
fp = fopen ("E:\\tmp\\vidu.txt","w+");  
fputs (s, fp);  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
18  
fgets() – fputs()  
Ví dụ:  
char s[100];  
FILE *fp;  
fp = fopen ("E:\\tmp\\vidu.txt","w+");  
if (fp==NULL) return 0;  
fputs ("Tran van Hung\n", fp);  
fputs ("Le Thi Thu Thao\n", fp);  
rewind(fp);  
fgets (s,100, fp);  
printf ("%s", s);  
// Tran Van Hung  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
19  
Hàm fscanf( )  
Hàm thư viện đọc dữ liệu từ tập tin theo định dạng:  
fscanf ( <file_ptr>, <format>, <argument, …> );  
Việc sử dụng hàm fscanf() tương tự như hàm  
scanf(), chꢁ có khác ở chỗ những gì lẽ ra nhập từ  
bàn phím sẽ được đọc vào từ tập tin.  
Ví dụ:  
fscanf (fp, "%d", &n);  
fscanf (fp, "%f", &(sv1->diem_btl);  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 09:File  
20  
Tải về để xem bản đầy đủ
pdf 33 trang Thùy Anh 17320 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Chương 9: Tập tin - Trần Quang", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_ky_thuat_lap_trinh_chuong_9_tap_tin_tran_quang.pdf