Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
358 KB
Nội dung
Tin Học Cơ Sở Làm Việc Với Tệp Tin (File) Cơ tập tin • Lưu trữ tập tin: Giá trị nhị phân • Trường hợp lưu trữ chuẩn (không mã hóa) – Ký tự: Mã ASCII - UNICODE – Chuỗi ký tự: Chuỗi mã ASCII ký tự – Số: chuỗi mã ASCII ký số biểu diễn nhị phân số • Đặc điểm truy xuất liệu tập tin: byte Lê Nguyên Khôi Cơ tập tin • Hệ điều hành xác định file Absolute Path hay Relative Path Đó chuỗi ký tự • Một thí dụ Absolute Path C – “C:\\TM1\\TM11\\f1.txt” – “C:/TM1/TM11/f1.txt” • Với file nằm thư mục hành, cần định file tên file ngắn gọn (relative path) Ví dụ : “nhanvien.dat” Lê Nguyên Khôi Phân loại tập tin • Tập tin văn bản: – Dữ liệu lưu trữ mã ASCII ký tự chữ số 01000001010000100011000100110010 ‘A’ ‘B’ ‘1’ ‘2’ • Tập tin nhị phân: – Dữ liệu lưu trữ dạng nhị phân liệu 0100000101000010000000 001100 ‘A’ ‘B’ ‘12’ Lê Nguyên Khôi Hệ điều hành đượ c ủy thác truy xuất tập tin byte 1800 (4) Địa file desc đưa vào biến f chương trình Bộ nhớ chương trình C Path, Last accessed date, filesize, Current position, code segment f= fopen(“t1.txt”.”r”); Data segment biến File*f 1800 (3) OS đọc file description data OS (1)chương trình nhờ OS mở tập tin Disk (2) OS kiểm tra tồn tập tin Mọi thao tác file chương trình thông qua biến f Lê Nguyên Khôi Thao tác file chuẩn thao tác file thông qua hệ điều hành Khai báo biến tập tin C FILE *f ; Chú ý: • Kiểu FILE khai báo thư viện stdio.h • Khai báo File *f; SAI Lê Nguyên Khôi Hai thao tác với tập tin • Đọc liệu từ tập tin biến Đọc file • Ghi liệu từ biến vào tập tin Ghi file Lê Nguyên Khôi Các bướ c đọ c file (1) (2) (3) (4) Chọn sách Mở sách để đọc Chọn vị trí đọc Lặp chưa xong (4.1) Đọc liệu vào đầu (4.2) Xử lý liệu đầu (5) Đóng sách (1) (2) (3) (4) Chọn file (hàm main làm) Mở file để đọc Chọn vị trí đọc Lặp chưa xong (4.1) Đọc liệu từ filebiến (4.2) Xử lý biến (5) Đóng file • Nếu đọc liệu từ đầu file bỏ qua bước chọn vị trí đọc Vị trí mặc định file sau mở file đầu file Lê Nguyên Khôi tên file tham số • Nếu viết hàm Các bướ c ghi file (1) (2) (3) (4) Chọn sách Mở sách để ghi Chọn vị trí ghi Lặp chưa xong (4.1) Chuẩn bị liệu đầu (4.2) Ghi liệu đầu lên file (5) Đóng sách (1) (2) (3) (4) Chọn file (hàm main làm) Mở file để ghi Chọn vị trí ghi Lặp chưa xong (4.1) Chuẩn bị giá trị cho biến (4.2) Ghi biến File (5) Đóng file • Nếu ghi liệu từ đầu file bỏ qua bước chọn vị trí ghi Vị trí mặc định file sau mở file đầu file • Nếu viết hàm tên file tham số Lê Nguyên Khôi Thao tác file chuẩn • • • • • • • Thư viện stdio.h Mở file Đóng file Di chuyển file Kiểm tra hết file chưa? Thao tác với vị trí hành Đổi tên/hủy file đóng Lê Nguyên Khôi 10 Mở file • FILE* fopen (const char* filename, const char* mode); • mode Text file Binary file Description “r”, “rt” “rb” read “w”, “wt” “wb” write, ghi đè file tồn “a” “a” append, mở file chưa có “r+”, “r+t” “r+b” mở để vừa đọc vừa ghi “w+”, “w+t” “w+b” mở để vừa đọc vừa ghi “a+”, “a+t” “a+b” mở để vừa đọc + ghi cuối file, mở file chưa tồn • Trả trị: NULL : thất bại Khác NULL: thành công • Ví dụ: FILE* f = fopen(“c:\\tm1\\tm2\\f1.txt” , ”r” ); Lê Nguyên Khôi 11 Đóng file • int fclose(FILE* f); – Trả trị: 0: thành công – Trả giá trị EOF ( -1) thất bại – Ví dụ: int FileExist (const char* fname){ FILE* f = fopen(fname, “r”); int result = (f==NULL)? : 1; if (f) fclose(f); return result; } Lê Nguyên Khôi 12 Kiểm tra hết file chưa? • int feof(FILE* f) – Trả trị: 1: Hết file – Trả trị 0: chưa hết file Lê Nguyên Khôi 13 Di chuyển file • Về đầu file : void rewind (FILE* f); • Dời n byte từ vị trí: fseek (FILE* f, long n, long pos); pos = SEEK_SET (hằng 0) : từ đầu file pos = SEEK_CUR (hằng 1): từ vị trí hành pos = SEEK_END (hằng 2): từ cuối file n>0 : dời tới, n[...]...Mở file • FILE* fopen (const char* filename, const char* mode); • mode Text file Binary file Description “r”, “rt” “rb” read “w”, “wt” “wb” write, ghi đè nếu file đã tồn tại “a” “a” append, mở mới nếu file chưa có “r+”, “r+t” “r+b” mở để vừa đọc vừa ghi “w+”, “w+t” “w+b” mở để vừa đọc vừa ghi “a+”, “a+t” “a+b” mở để vừa đọc + ghi ở cuối file, mở mới nếu file chưa tồn tại • Trả... công • Ví dụ: FILE* f = fopen(“c:\\tm1\\tm2\\f1.txt” , ”r” ); Lê Nguyên Khôi 11 Đóng file • int fclose (FILE* f); – Trả trị: 0: thành công – Trả giá trị EOF ( hằng -1) thất bại – Ví dụ: int FileExist (const char* fname){ FILE* f = fopen(fname, “r”); int result = (f==NULL)? 0 : 1; if (f) fclose(f); return result; } Lê Nguyên Khôi 12 Kiểm tra hết file chưa? • int feof (FILE* f) – Trả trị: 1: Hết file rồi –... rồi – Trả trị 0: chưa hết file Lê Nguyên Khôi 13 Di chuyển trong file • Về đầu file : void rewind (FILE* f); • Dời n byte từ 1 vị trí: fseek (FILE* f, long n, long pos); pos = SEEK_SET (hằng 0) : từ đầu file pos = SEEK_CUR (hằng 1): từ vị trí hiện hành pos = SEEK_END (hằng 2): từ cuối file n>0 : dời tới, n ... Khai báo File *f; SAI Lê Nguyên Khôi Hai thao tác với tập tin • Đọc liệu từ tập tin biến Đọc file • Ghi liệu từ biến vào tập tin Ghi file Lê Nguyên Khôi Các bướ c đọ c file (1) (2) (3) (4) Chọn... chưa xong (4. 1) Đọc liệu vào đầu (4. 2) Xử lý liệu đầu (5) Đóng sách (1) (2) (3) (4) Chọn file (hàm main làm) Mở file để đọc Chọn vị trí đọc Lặp chưa xong (4. 1) Đọc liệu từ file biến (4. 2) Xử lý... Đóng file • Nếu đọc liệu từ đầu file bỏ qua bước chọn vị trí đọc Vị trí mặc định file sau mở file đầu file Lê Nguyên Khôi tên file tham số • Nếu viết hàm Các bướ c ghi file (1) (2) (3) (4) Chọn