Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
lượt xem 2
download
Bài giảng Kỹ thuật lập trình: Chương 9 - Tập tin, được biên soạn gồm các nội dung chính sau: mô tả tập tin; các loại tập tin; quy trình xử lý tập tin; khai báo con trỏ tập; chế độ mở tập tin; kiểm tra việc mở tập tin; hàm kiểm tra cuối tập tin;...Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Kỹ thuật lập trình: Chương 9 - Trần Quang
- Chương 09 TẬP TIN Trần Quang Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 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 * Ví dụ: FILE *fp; Kiểu FILE là kiểu cấu trúc do C định nghĩa sẵn trong Trần Quang Kỹ thuật lập trình Chương 09: File © 2016 8
- Mở tập tin fopen (, ); 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 Kỹ thuật lập trình Chương 09: File © 2016 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ộ w nội dung tập tin đó. Nối tập tin. Mở tập tin đã có sẵn hoặc tạo mới tập tin, a 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 r+ tin nếu tập tin chưa có sẵn. Mở tập tin cho phép đọc lẫn ghi. Tạo mới tập tin nếu w+ 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ó a+ sẵn hoặc tạo mới tập tin, ghi vào cuối tập tin đó. Trần Quang Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 11
- Đóng tập tin Cú pháp: int fclose (FILE *fp); Ví dụ: fclose(fp); Trần Quang Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 14
- Đọ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; false ch = fgetc(fp); CH EOF i += 1; true } Đưa CH vào bộ đệm CH = Đọc một ký tự buffer[i] = '\0'; } Trần Quang Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 17
- 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 Kỹ thuật lập trình Chương 09: File © 2016 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 Kỹ thuật lập trình Chương 09: File © 2016 19
- Hàm fscanf( ) Hàm thư viện đọc dữ liệu từ tập tin theo định dạng: fscanf ( , , ); 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 Kỹ thuật lập trình Chương 09: File © 2016 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Kỹ thuật lập trình: Chương 1 - Trần Quang
39 p | 8 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 8 - Trần Quang
34 p | 8 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 7 - Trần Quang
28 p | 7 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang
37 p | 11 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 4 - Trần Quang
32 p | 7 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 3 - Trần Quang
52 p | 10 | 2
-
Bài giảng Kỹ thuật lập trình: Chương 2 - Trần Quang
25 p | 10 | 2
-
Bài giảng Kỹ thuật lập trình: Tập tin - ThS. Đặng Bình Phương
48 p | 0 | 0
-
Bài giảng Kỹ thuật lập trình: Kỹ thuật lập trình đệ quy - ThS. Đặng Bình Phương
44 p | 1 | 0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu cấu trúc - ThS. Đặng Bình Phương
33 p | 2 | 0
-
Bài giảng Kỹ thuật lập trình: Chuỗi ký tự - ThS. Đặng Bình Phương
20 p | 2 | 0
-
Bài giảng Kỹ thuật lập trình: Danh sách liên kết - ThS. Đặng Bình Phương
20 p | 2 | 0
-
Bài giảng Kỹ thuật lập trình: Chuyển đổi kiểu dữ liệu và cấp phát bộ nhớ động - ThS. Đặng Bình Phương
28 p | 3 | 0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Nâng cao) - ThS. Đặng Bình Phương
48 p | 0 | 0
-
Bài giảng Kỹ thuật lập trình: Dữ liệu kiểu con trỏ (Cơ bản) - ThS. Đặng Bình Phương
40 p | 0 | 0
-
Bài giảng Kỹ thuật lập trình: Giới thiệu môn học - ThS. Đặng Bình Phương
7 p | 0 | 0
-
Bài giảng Kỹ thuật lập trình: Các kỹ thuật thao tác trên bit - ThS. Đặng Bình Phương
29 p | 1 | 0
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn