Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
569,43 KB
Nội dung
CHƯƠNG 9CHƯƠNG9TẬPTIN (FILE) TẬPTIN(FILE) 1. GIỚI THIỆU y C/C++ hổ trợ 2 hệ thống nhập xuất : y C/C++ hổ trợ 2 hệ thống nhập xuất : − Mộthệ thống thừakế từ ngôn ngữ C ộ ệ ố ậ ấ ớ ố − M ộ th ệ th ố n g nh ậ pxu ấ thư ớ n g đ ố itượn g của C++. 2. Streams và Files y Hệ thống nhập xuất của C Hệ thống nhập xuất của C − Cung cấpmột giao diện( interface )nhất quán độc lập với thiết bị thật sự mà quán độc lập với thiết bị thật sự mà chương trình tương tác. cung cấp một mức độ trừu tượng giữa lập − cung cấp một mức độ trừu tượng giữa lập trình viên và thiếtbị nhậpxuất. Sự trừu tượng này được gọi là stream và thiết bị tượng này được gọi là stream và thiết bị thậtsựđượcgọilàfile. 3. Streams (dòng nhậpxuất) y Hệ thống file của C được thiết kế để làm Hệ thống file của C được thiết kế để làm việcvớinhiềuloạithiếtbị khác nhau như terminals ( thiết bị đầu cuối ), các loại ổ đĩa , terminals ( thiết bị đầu cuối ), các loại ổ đĩa , băng từ, y Hệ thống file chuyển đổi mỗi loại thành một y Hệ thống file chuyển đổi mỗi loại thành một thiếtbị logic gọilàstream. Tấtcả stream có cùng hành vi có cùng hành vi 3. Streams (dòng nhậpxuất) y Stream độc lập với thiết bị nên cùng một Stream độc lập với thiết bị nên cùng một hoạt động trên stream như ghi vào mộttập tin trên đĩa cũng có thể dùng để ghi vào loại tin trên đĩa cũng có thể dùng để ghi vào loại thiếtbị khác như console ( màn hình ). y Có hai loại stream : y Có hai loại stream : − Vănbản( text ) h hâ ( b ) − N h ị p hâ n ( b inar y ) . 3.1. Text Streams y Một text stream là một chuổi các ký tự . Một text stream là một chuổi các ký tự . Trong mộttextstream,mộtsố ký tự có thể bị chuyển đổi tùy thuộc môi trường . bị chuyển đổi tùy thuộc môi trường . y Ví dụ,kýtự newline ('\n') có thể bịđổi thành cặp ký tự carriage return/linefeed ( ký thành cặp ký tự carriage return/linefeed ( ký tự xuống dòng và vềđầudòng ). 3.1. Text Streams y Không có quan hệ một - một giữa các ký tự Không có quan hệ một một giữa các ký tự đượcviết(hayđọc) và những ký tự trên các thiết bị ngoài . Do đó số ký tự được viết (hay thiết bị ngoài . Do đó số ký tự được viết (hay đọc) có thể khác số số ký tự trên thiếtbị ngoài . ngoài . 3.2. Binary Streams y Một binary stream là một chuổi bytes Một binary stream là một chuổi bytes tương ứng một-mộtvớichuổibytestrên thiết bị ngoài . Nghĩa là không có sự chuyển thiết bị ngoài . Nghĩa là không có sự chuyển đổixảyra.Dođó, số bytes đượcviết(hay đọc ) thì bằng với số bytes trên thiết bị đọc ) thì bằng với số bytes trên thiết bị ngoài. 4. FILES y Một file có thể là một tậptin trên đĩa , một Một file có thể là một tậptin trên đĩa , một terminal, hay máy in. y Để tạo kết nối ( associate ) giữa một stream y Để tạo kết nối ( associate ) giữa một stream vớimột file ta dùng hoạt động mở ( open ). Khi file được mở thông tin có thể được trao y Khi file được mở , thông tin có thể được trao đổigiữafilevàchương trình. 4. FILES y Không phải tất cả file đều có cùng khả năng Không phải tất cả file đều có cùng khả năng như nhau. y Ví dụ một tậptin trên đĩa ( file ) có thể hỗ y Ví dụ , một tậptin trên đĩa ( file ) có thể hỗ trợ truy xuấtngẫu nhiên trong khi đómáyin ( cũng là file) thì không thể ( cũng là file) thì không thể . y “Tấtcả stream là như nhau nhưng file thì không " thì không " . [...]... không thể mở tậptin • "r+" Nếu tậptin được mở thành công, hàm fopen() nạp nó vào trong bộ nhớ Trả về NULL nhớ nếu không thể mở tập tin 4.3 Mở file "a+" Nếu tậptin được mở thành công, hàm a fopen() nạp nó vào bộ nhớ và trả về con trỏ trỏ đến ký tự đầu tiên của tậptin Nếu tậptin không tồn tại, một tậptin mới được tạo Trả về NULL nếu không thể mở tập tin Các hoạt động có thể làm trên tập tin: đọc,... mở tậptin − "r" Nếu tậptin được mở thành công, hàm fopen() nạp nó vào bộ nhớ và trả về con trỏ trỏ đến ký tự đầu tiên của tậptin Ngược lại hàm fopen() trả về NULL lại, − "w" Nếu tậptin tồn tại, nội dung của nó sẽ bị ghi đè 4.3 Mở file • "a" Nếu tậptin được mở thành công hàm a fopen() nạp nó vào bộ nhớ và trả về con trỏ trỏ đến ký tự cuối cùng của tậptin Nếu tậptin không tồn tại, một tập tin. .. tậptin Nếu tậptin không tồn tại, một tậptin mới được tạo Trả về NULL nếu không thể mở tập tin Các hoạt động có thể làm trên tập tin: đọc, ghi thêm nội dung mới vào cuối tậptin Không thể tin sửa đổi nội dung đang có trong tập tin 4.3 Mở file Ví dụ: FILE *fp; if((fp = fopen("test txt" "w")) == NULL) fopen("test.txt","w")) { cout . CHƯƠNG 9 CHƯƠNG 9 TẬP TIN (FILE) TẬP TIN (FILE) 1. GIỚI THIỆU y C/C++ hổ trợ 2 hệ thống nhập xuất : y C/C++ hổ trợ 2 hệ thống nhập xuất : −. file y Các mode để mở tập tin Các mode để mở tập tin − "r" Nếutậptinđượcmở thành công, hàm fopen () nạp nó vào bộ nhớ và trả về con fopen () nạp nó vào bộ nhớ và trả về con trỏ trỏđếnkýtựđầutiêncủatậptin. Ngược lại hàm fopen () trả về NULL Ngược lại , hàm fopen () trả về NULL −. trỏ đ ế n ký t ự đ ầ u tiên c ủ a t ậ p tin . N ế u t ậ p tin không đ ế n ký t ự đ ầ u tiên c ủ a t ậ p tin . N ế u t ậ p tin không tồntại, mộttậptinmới đượctạo. Trả về NULL n ế u không th ể m ở t ậ p tin . n ế u không th ể m ở t ậ p tin . y Các hoạt động có thể làm trên tậptin:đọc, ghi thêm n ộ i dung m ớ i vào cu ố i t ậ p tin Không th ể thêm n ộ i dung m ớ i vào cu ố i t ậ p tin . Không th ể sửa