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
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ệpHàm ghi lên tệp ký tự có mã bằng m = ch % 256Nếu thành công hàm cho mã ký tự được ghi, nếu không hàm cho EOFNế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ệpHàm đọc một ký tự từ tệpNế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 EOFHàm đọc một lượt cả 2 mã 13 và 10 rồi trả về giá trị 10Khi 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ệpGiá trị các tham số được ghi lên tệp theo định dạng trong xâu_định_dạngNế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ệpGhi 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ệpXâu kết quả được bổ sung thêm ký tự \0Khi đọ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); ...
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ệpHàm ghi lên tệp ký tự có mã bằng m = ch % 256Nếu thành công hàm cho mã ký tự được ghi, nếu không hàm cho EOFNế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ệpHàm đọc một ký tự từ tệpNế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 EOFHàm đọc một lượt cả 2 mã 13 và 10 rồi trả về giá trị 10Khi 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ệpGiá trị các tham số được ghi lên tệp theo định dạng trong xâu_định_dạngNế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ệpGhi 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ệpXâu kết quả được bổ sung thêm ký tự \0Khi đọ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ìm kiếm theo từ khóa liên quan:
Bài giảng Kỹ thuật lập trình Kỹ thuật lập trình Tệp văn bản Tệp nhị phân Khai báo tệp văn bản Truy cập ngẫu nhiên Hàm xử lý tệpGợi ý tài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 266 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 207 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 194 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 166 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 153 0 0 -
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 118 0 0 -
Giáo trình về phân tích thiết kế hệ thống thông tin
113 trang 114 0 0 -
LUẬN VĂN: Tìm hiểu kỹ thuật tạo bóng cứng trong đồ họa 3D
41 trang 109 0 0 -
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 trang 106 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 2
184 trang 91 0 0