PowerPoint Presentation Chương 8 Quản lý tập tin Mục tiêu Giải thích streams và file Thảo luận về các streams văn bản và streams nhị phân Giải thích các hàm xử lý tập tin Giải thích về con trỏ tập.
Chương Quản lý tập tin Mục tiêu Giải thích streams file Thảo luận streams văn streams nhị phân Giải thích hàm xử lý tập tin Giải thích trỏ tập tin Thảo luận trỏ hành Giải thích đối số dịng lệnh Nhập/Xuất Tập Tin Tất thao tác nhập/xuất C thực hàm thư viện chuẩn Tiếp cận làm cho hệ thống tập tin C mạnh uyển chuyển Nhập/xuất C theo cách: Dạng biễu diễn nhị phân Dạng văn Streams Hệ thống tập tin C làm việc với nhiều thiết bị khác (máy in, ổ đĩa, ổ băng từ,…) Hệ thống tập tin có vùng đệm chuyển thiết bị thiết bị logic gọi stream Mọi streams hoạt động tương tựviệc quản lý thiết bị khác dễ dàng loại streams: stream văn stream nhị phân Stream nhị phân Streams Văn Bản Là chuỗi ký tự tổ chức thành dòng kết thúc ký tự sang dòng Trong stream văn bản, xảy vài chuyển đổi ký tự môi trường yêu cầu Các ký tự ghi (đọc) ký tự thiết bị ngoại vi khơng tương ứng một-một Số lượng ký tự ghi (hay đọc) không giống số lượng ký tự thiết bị ngoại vi Streams Nhị Phân Là chuỗi byte với tương ứng 1-1 với thiết bị ngoại vi (khơng có chuyển đổi ký tự) Số lượng byte đọc (ghi) giống số lượng byte thiết bị ngoại vi Khơng có ký hiệu dùng để điểm kết thúc tập tin hay kết thúc mẫu tin Kết thúc tập tin xác định kích thước tập tin Tập Tin Một tập tin tham chiếu tới: − Tập tin đĩa − Thiết bị đầu cuối − Máy in Mở file: Kết nối tập tin với stream Đóng file: Ngắt kết nối tập tin với stream Chương trình kết thúc bình thường: Tất tập tin tự động đóng Chương trình kết thúc bất thường: Các tập tin mở Các Hàm Cơ Bản Về Tập Tin Tên Chức fopen() Mở tập tin fclose() Đóng tập tin fputc() Ghi ký tự vào tập tin fgetc() Đọc ký tự từ tập tin fread() Đọc từ tập tin vào vùng đệm fwrite() Ghi từ vùng đệm vào tập tin fseek() tìm vị trí tập tin fprintf() Hoạt động giống printf(), tập tin fscanf() Hoạt động giống scanf(), tập tin feof() Trả true đến cuối tập tin ferror() Trả true xảy lỗi rewind() Đặt lại trỏ định vị trí bên tập tin đầu tập tin remove() Xóa tập tin fflush() Ghi liệu từ vùng đệm bên vào tập tin xác định Con Trỏ Tập Tin Việc đọc ghi liệu điều khiển trỏ tập tin Con trỏ tập tin: − Trỏ đến cấu trúc chứa thông tin tập tin − Thông tin bao gồm: Tên tập tin, vị trí tập tin, chế độ làm việc (đọc/ghi), trạng thái (có/khơng lỗi? đến cuối tập tin?) Cú pháp phai báo: FILE *fp; Mở Một Tập Tin Văn Bản Hàm fopen(): FILE *fopen(const char *filename, const char *mode); − Mở stream liên kết tập tin với stream − Trả trỏ kết hợp với tập tin Chế độ r w a r+ w+ a+f Ý nghĩa Mở tập tin văn để đọc Tạo tập tin văn để ghi Nối vào tập tin văn Mở tập tin văn để đọc/ghi Tạo tập tin văn để đọc/ghi Nối tạo tập tin văn để đọc/ghi Nhập Xuất Chuỗi Hàm fputs() and fgets() ghi vào đọc chuỗi ký tự từ tập tin đĩa Hàm fputs() viết toàn chuỗi vào stream cho Hàm fgets() đọc chuỗi từ stream có đọc ký tự sang dòng sau đọc length-1 ký tự Nguyên mẫu hàm là: int fputs(const char *str, FILE *fp); char *fgets( char *str, int length, FILE *fp); Nhập Xuất Chuỗi Hàm fputs(): Ghi chuỗi ký vào file int fputs(const char *str, FILE *fp); Hàm fgets(): Đọc chuỗi ký tự từ file char *fgets( char *str, int length, FILE *fp); Đọc chuỗi từ stream có Chuỗi đọc đến gặp ký tự xuống dòng sau đọc length-1 ký tự Mở Một Tập Tin Nhị Phân Hàm fopen(): FILE *fopen(const char *filename,const char *mode); − Mở stream liên kết tập tin với stream − Trả trỏ tập tin kết hợp với tập tin Chế độ rb wb ab r+b w+b a+b Ý nghĩa Mở tập tin nhị phân để đọc Tạo tập tin nhị phân để ghi Nối vào tập tin nhị phân Mở tập tin nhị phân để đọc/ghi Tạo tập tin nhị phân để đọc/ghi Nối vào tập tin nhị phân để đọc/ghi Đóng Tập Tin Nhị Phân Hàm fclose() đóng stream mở hàm fopen() Nguyên mẫu hàm fclose() là: int fclose(FILE *fp); Hàm fread() fwrite() Hàm fread() fwrite(): size_t fread(void *buffer, size_t num_bytes, size_t count, FILE *fp); size_t fwrite(const void *buffer, size_t num_bytes, size_t count, FILE *fp); − Đọc ghi liệu không định dạng − Được dùng để đọc/ghi toàn khối liệu − Hữu ích trường hợp đọc ghi kiểu liệu người dùng định nghĩa, đặc biệt cấu trúc fprintf() fscanf() - Mặc dù fprintf() fscanf() cách dễ luôn hiệu Mỗi lời gọi phải thêm khoảng thời gian overhead, liệu ghi theo dạng ASCII có định dạng khơng phải theo định dạng nhị phân Vì vậy, tốc độ độ lớn tập tin vấn đề đáng ngại, fread() fwrite() lựa chọn tốt ... tin fclose() Đóng tập tin fputc() Ghi ký tự vào tập tin fgetc() Đọc ký tự từ tập tin fread() Đọc từ tập tin vào vùng đệm fwrite() Ghi từ vùng đệm vào tập tin fseek() tìm vị trí tập tin fprintf()... bên vào tập tin xác định Con Trỏ Tập Tin Việc đọc ghi liệu điều khiển trỏ tập tin Con trỏ tập tin: − Trỏ đến cấu trúc chứa thông tin tập tin − Thông tin bao gồm: Tên tập tin, vị trí tập tin,... nghĩa Mở tập tin nhị phân để đọc Tạo tập tin nhị phân để ghi Nối vào tập tin nhị phân Mở tập tin nhị phân để đọc/ghi Tạo tập tin nhị phân để đọc/ghi Nối vào tập tin nhị phân để đọc/ghi Đóng Tập Tin