intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:33

6
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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!

Chủ đề:
Lưu

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

  1. Chương 09 TẬP TIN Trần Quang Kỹ thuật lập trình Chương 09: File © 2016 1
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. Đó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
  13. Đọ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
  14. 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
  15. Đọ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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2