Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
1,5 MB
Nội dung
LẬP TRÌNH CƠ BẢN KIỂU TẬP TIN (FILE) Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT NỘI DUNG Giới thiệu Biến trỏ tập tin Các thao tác tập tin Truy cập tập tin văn Truy cập tập tin nhị phân Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT GIỚI THIỆU Kiểu tập tin: Dữ liệu lưu trữ thành file hệ thống Các kiểu tập tin: kiểu Tập tin văn (Text File) Tập tin định kiểu (Typed File) Tập tin không định kiểu (Untyped File) Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT BIẾN VÀ CON TRỎ TẬP TIN Biến tập tin: biến thuộc kiểu liệu tập tin dùng để đại diện cho tập tin Con trỏ tập tin: Khi tập tin mở để làm việc, thời điểm, có vị trí tập tin mà việc đọc/ghi thơng tin xảy Người ta hình dung có trỏ đến vị trí đặt tên trỏ tập tin Sau đọc/ghi xong liệu, trỏ chuyển dịch thêm phần tử phía cuối tập tin Sau phần tử liệu cuối tập tin dấu kết thúc tập tin EOF (End Of File) Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CÁC THAO TÁC TRÊN TẬP TIN Khai báo biến tập tin Mở tập tin hàm fopen() xử lý liệu tập tin hàm đọc/ghi liệu Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT Đóng tập tin hàm fclose() CÁC THAO TÁC TRÊN TẬP TIN Khai báo biến tập tin Cú pháp: FILE Ví dụ: FILE *f1,*f2; Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CÁC THAO TÁC TRÊN TẬP TIN Mở tập tin Cú pháp: FILE *fopen(char *Path, const char *Mode) Path: chuỗi đường dẫn đến tập tin đĩa Type: chuỗi xác định cách thức mà tập tin mở Các giá trị Mode: Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CÁC THAO TÁC TRÊN TẬP TIN Mở tập tin Mode Ý nghĩa r Mở tập tin văn để đọc w Tạo tập tin văn để ghi a Nối vào tập tin văn rb Mở tập tin nhị phân để đọc wb Tạo tập tin nhị phân để ghi ab Nối vào tập tin nhị phân Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CÁC THAO TÁC TRÊN TẬP TIN Mở tập tin Mode Ý nghĩa r+ Mở tập tin văn để đọc/ghi w+ Tạo tập tin văn để đọc ghi a+ Nối vào hay tạo tập tin văn để đọc/ghi r+b Mở tập tin nhị phân để đọc/ghi w+b Tạo tập tin nhị phân để đọc/ghi a+b Nối vào hay tạo tập tin nhị phân Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT CÁC THAO TÁC TRÊN TẬP TIN Mở tập tin Ví dụ: Mở tập tin để ghi FILE *f; f = fopen(“TEST.txt”, “w”); if (f!=NULL) { /* Các câu lệnh để thao tác với tập tin*/ /* Đóng tập tin*/ } Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT TRUY CẬP TẬP TIN VĂN BẢN Đọc liệu từ tập tin văn bản: int getc(FILE *f): đọc liệu từ tập tin văn mở để làm việc char *fgets(char *buffer, int n, FILE *f): đọc chuỗi ký tự từ tập tin văn mở liên kết với trỏ f đọc đủ n ký tự gặp ký tự xuống dòng ‘\n’ hay gặp ký tự kết thúc EOF fscanf(FILE *f, const char *format, varlist): đọc liệu từ tập tin văn vào danh sách biến theo định dạng Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT TRUY CẬP TẬP TIN VĂN BẢN Ví dụ 1: Viết chương trình ghi chuỗi ký tự lên tập tin văn D:\\THIDU.txt #include #include int main() { FILE *f; f=fopen("D:\\thidu.txt","w+"); if (f!=NULL) { fputs("BAI THUC HANH.\n",f); fputs("Bai 1: Nhap cac so nguyen duong.",f); fclose(f); } getch(); return 0; } Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT TRUY CẬP TẬP TIN VĂN BẢN Ví dụ 2: Viết chương trình ghi chuỗi ký tự lên tập tin văn D:\\THIDU.txt #include #include int main() { FILE *f1,*f2; f1=fopen("D:\\THIDU.txt","rt"); f2=fopen("D:\\VIDU.txt","wt"); if (f1!=NULL && f2!=NULL) { int ch=fgetc(f1); while (! feof(f1)) { fputc(ch,f2); ch=fgetc(f1); }fcloseall(); } getch(); return 0;} Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT TRUY CẬP TẬP TIN NHỊ PHÂN Ghi liệu lên tập tin nhị phân - Hàm fwrite() : size_t fwrite(const void *ptr, size_t size, size_t n, FILE *f) ptr: trỏ đến vùng nhớ chứa thông tin cần ghi lên tập tin n: số phần tử ghi lên tập tin size: kích thước phần tử f: trỏ tập tin mở Giá trị trả hàm số phần tử ghi lên tập tin Giá trị n trừ xuất lỗi Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT TRUY CẬP TẬP TIN NHỊ PHÂN Đọc liệu từ tập tin nhị phân - Hàm fread() : size_t fread(const void *ptr, size_t size, size_t n, FILE *f) ptr: trỏ đến vùng nhớ nhận liệu từ tập tin n: số phần tử đọc từ tập tin size: kích thước phần tử f: trỏ tập tin mở Giá trị trả hàm số phần tử đọc từ tập tin Giá trị n hay nhỏ n chạm đến cuối tập tin có lỗi xuất Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT TRUY CẬP TẬP TIN NHỊ PHÂN Di chuyển trỏ tập tin - Hàm fseek(): int fseek(FILE *f, long offset, int whence) f: trỏ tập tin thao tác offset: số byte cần dịch chuyển trỏ tập tin kể từ vị trí trước Phần tử vị trí whence: vị trí bắt đầu để tính offset: ( SEEK_SET): Vị trí đầu tập tin (SEEK_CUR): Vị trí trỏ tập tin (SEEK_END): Vị trí cuối tập tin Kết trả hàm việc di chuyển thành công Nếu không thành công, giá trị khác (đó mã lỗi) trả Biên soạn: Chu Thị Hường – Bộ môn HTTT – Khoa CNTT BÀI TẬP THỰC HÀNH Bài Thực biên soạn chạy thử nghiệm Ví dụ Bài 2: Thực biên soạn chạy thử nghiệm chương trình sau: #include #include int a[10]; void GhiFile(int N) { FILE *f=fopen("D:\\Data.dat","wt"); for(int i=0;i