Danh mục

Bài giảng Kỹ thuật lập trình - Chương 7: Tệp

Số trang: 38      Loại file: pdf      Dung lượng: 428.07 KB      Lượt xem: 16      Lượt tải: 0    
Thu Hiền

Phí tải xuống: 9,000 VND Tải xuống file đầy đủ (38 trang) 0
Xem trước 4 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài giảng Kỹ thuật lập trình - Chương 7: Tệp, cung cấp cho người học những kiến thức như: Khái niệm tệp; Tệp văn bản; Tệp nhị phân. Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình - Chương 7: Tệp BÀI GIẢNG HỌC PHẦNKỸ THUẬT LẬP TRÌNH CHƯƠNG 7: TỆP Nội dung7.1. Khái niệm tệp7.2. Tệp văn bản7.3. Tệp nhị phân 2 7.1. Khái niệm tệp• Tệp: là một tập hợp các dữ liệu cùng kiểu, có liên quan với nhau, được nhóm lại với nhau thành một dãy và thường được lưu trữ trên các thiết bị nhớ ngoài dưới một tên gọi nào đó. Tệp tồn tại ngay cả khi chương trình đã kết thúc hoặc tắt máy, thường được lưu trữ để sử dụng lâu dài• Khi khai báo biến tệp không cần xác định số phần tử của tệp• Khi lưu trữ, các phần tử của tệp được sắp xếp thành một dãy các byte liên tiếp nhau, sau phần tử dữ liệu cuối cùng là phần tử EOF (mã kết thúc tệp)• 2 loại tệp: tệp văn bản, tệp nhị phân 3 7.2. Tệp văn bản• Khai báo tệp văn bản• Mở tệp văn bản• Đóng tệp văn bản• Đọc/ghi một ký tự với tệp văn bản• Đọc/ghi theo kiểu văn bản• Đọc/ghi một xâu ký tự 4 Khai báo tệp văn bản• Tệp văn bản:- Lưu trữ dữ liệu dưới dạng ký tự- Có 2 cách truy xuất theo kiểu ký tự: + Truy xuất theo từng ký tự + Truy xuất theo từng dòng• Cú pháp khai báo biến tệp: FILE *con_trỏ_tệp; Ví dụ: FILE *fp; 5 Mở tệp văn bản (1)• Cú pháp: con_trỏ_tệp = fopen(tên_tệp, kiểu_truy_nhập);- Hàm fopen nếu mở tệp thành công sẽ trả về con trỏ tệp cho tệp được mở, nếu tệp cần mở không tồn tại trên ổ đĩa thì hàm fopen trả về giá trị NULL- tên_tệp có thể bao gồm cả đường dẫn đầy đủ tới tệp Ví dụ: C:\SV\tepvanban.txt 6 Mở tệp văn bản (2)• Cú pháp: (tiếp)- kiểu_truy_nhập có thể nhận các giá trị sau: r mở tệp để đọc, nếu tệp chưa tồn tại thì báo lỗi w mở tệp mới để ghi, nếu tệp đã tồn tại sẽ bị xóa a mở tệp để ghi bổ sung vào cuối tệp, nếu tệp chưa tồn tại thì tạo tệp mới r+ mở tệp để cập nhật (đọc/ghi), nếu tệp chưa tồn tại thì báo lỗi w+ mở tệp mới để đọc/ghi, nếu tệp đã tồn tại sẽ bị xóa a+ mở tệp để đọc/ghi bổ sung vào cuối tệp, nếu tệp chưa tồn tại thì tạo tệp mới- Ví dụ: fp = fopen(C:\SV\tepvanban.txt, w); 7 Đóng tệp văn bản• Cú pháp: fclose(con_trỏ_tệp);- Các thao tác thực hiện: + Đẩy dữ liệu còn trong vùng đệm lên đĩa (khi đang ghi) + Xóa vùng đệm (khi đang đọc) + Giải phóng biến con trỏ để nó có thể dùng cho tệp khác. Nếu thành công hàm cho giá trị 0, trái lại hàm cho EOF• Ví dụ: fclose(fp); 8 Đọc/ghi một ký tự với tệp văn bản (1)• Ghi ký tự vào tệp: Có thể sử dụng 1 trong 2 hàm: putc(ch, fp); fputc(ch, fp); trong đó: ch là một giá trị nguyên (coi là không dấu), fp là con trỏ tệpHàm ghi lên tệp ký tự có mã bằng m = ch % 256Nếu thành công hàm cho mã ký tự được ghi, nếu không hàm cho EOFNếu m=10, hàm sẽ ghi lên tệp 2 mã 13 và 10 9 Đọc/ghi một ký tự với tệp văn bản (2)• Đọc ký tự từ tệp: Có thể sử dụng 1 trong 2 hàm: getc(fp); fgetc(fp); trong đó: fp là con trỏ tệpHàm đọc một ký tự từ tệpNếu thành công hàm cho mã ký tự đọc được ( [0,255], nếu gặp cuối tệp hoặc có lỗi thì hàm cho EOFHàm đọc một lượt cả 2 mã 13 và 10 rồi trả về giá trị 10Khi gặp mã 26 thì hàm trả về EOF 10 Đọc/ghi theo kiểu văn bản (1)• Ghi dữ liệu theo định dạng: fprintf(fp,xâu_định_dạng, danh_sách_tham_số); trong đó: fp là con trỏ tệpGiá trị các tham số được ghi lên tệp theo định dạng trong xâu_định_dạngNếu thành công hàm trả về giá trị nguyên bằng số byte dữ liệu được ghi lên tệp, khi có lỗi thì hàm cho EOF 11 Đọc/ghi theo kiểu văn bản (2)• Đọc dữ liệu theo định dạng: fscanf(fp,xâu_định_dạng, danh_sách_tham_số); trong đó: fp là con trỏ tệpĐọc dữ liệu từ tệp, biến đổi theo định dạng và lưu kết quả vào các tham sốHàm trả về giá trị bằng số trường được đọc 12 Đọc/ghi một xâu ký tự (1)• Ghi một xâu ký tự vào tệp: fputs(s,fp); trong đó: - s là con trỏ trỏ tới địa chỉ đầu của một xâu ký tự kết thúc bằng ký tự \0 - fp là con trỏ tệpGhi xâu s lên tệp fp (không ghi ký tự \0 vào tệp)Nếu thành công hàm trả về ký tự cuối cùng được ghi vào tệp, khi có lỗi thì hàm cho EOF 13 Đọc/ghi một xâu ký tự (2)• Đọc một xâu ký tự từ tệp: fgets(s,n,fp); trong đó: - s là con trỏ (kiểu char) trỏ tới một vùng nhớ đủ lớn để lưu xâu ký tự đọc được từ tệp - n là số nguyên xác định độ dài cực đại của xâu cần đọc - fp là con trỏ tệpĐọc một xâu ký tự từ tệp fp lưu vào vùng nhớ s 14 Đọc/ghi một xâu ký tự (3)• Đọc một xâu ký tự từ tệp: (tiếp)Quá trình đọc kết thúc khi: + Hoặc đã đọc n-1 ký tự + Hoặc gặp dấu xuống dòng (cặp mã 13 10), khi đó mã 10 được đưa vào xâu kết quả + Hoặc kết thúc tệpXâu kết quả được bổ sung thêm ký tự \0Khi đọc thành công, hàm trả về địa chỉ vùng nhận kết quả, nếu có lỗi hoặc đọc hết tệp thì hàm trả về giá trị NULL 15 Ví dụ (1)• Chương trình đọc/ghi từng dòng văn bản:#includeint main(void){ FILE *fp; int i; char s[256]; fp = fopen(vanban.txt,w); 16 Ví dụ (2)i=0;while(1) { i++; printf(Nhap dong thu %d (nhan Enter de ket thuc):,i); ...

Tài liệu được xem nhiều: