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 đủ
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:
bai_giang_ky_thuat_lap_trinh_chuong_9_tap_tin_tran_quang.pdf

