Thao tác tệp
Khái niệm tệp
Tệp là tập hợp dữ liệu được thu thập theo mục đích nhất định. C/C++ coi mỗi tệp là một luồng byte có thứ tự, mỗi tệp kết thúc bằng dấu kết thúc tệp (EOF). Khi thao tác với tệp, chương trình cần mở tệp trước; mỗi khi tệp được mở (nhớ đóng sau khi dùng), tệp sẽ gắn với một luồng; luồng thực chất là một dãy byte.
C/C++ chia tệp thành tệp văn bản và tệp nhị phân. Tệp văn bản là văn bản thông thường (trọng tâm), còn tệp nhị phân là tệp định dạng đặc biệt hoặc tệp thực thi.
Các bước thao tác tệp
1、Mở tệp, đưa con trỏ tệp trỏ vào tệp, quyết định chế độ mở;
2、Đọc/ghi tệp (trong thi đấu chủ yếu dùng, thao tác khác tạm không đề cập);
3、Dùng xong thì đóng tệp.
Hàm freopen
Giới thiệu
Hàm dùng để chuyển hướng luồng vào/ra tiêu chuẩn đến tệp theo chế độ chỉ định, nằm trong stdio.h (cstdio). Hàm này cho phép đổi môi trường I/O mà không cần sửa code. Khi dùng phải đảm bảo luồng đáng tin cậy.
Có ba chế độ chính: đọc, ghi, thêm.
Cú pháp
1 | |
Tham số
filename: tên tệp cần mởmode: chế độ mở, xác định quyền truy cậpstream: con trỏ tệp, thường là luồng chuẩn (stdin/stdout) hoặc lỗi (stderr)- Giá trị trả về: con trỏ tệp trỏ tới tệp đã mở
Chế độ mở (tùy đọc)
r: mở chỉ đọc, tệp phải tồn tại, chỉ đọc (phổ biến)r+: đọc/ghi, tệp phải tồn tạirb: chỉ đọc nhị phân, tệp phải tồn tạirb+: đọc/ghi nhị phân, tệp phải tồn tạirt+: đọc/ghi văn bảnw: chỉ ghi, tệp không tồn tại sẽ tạo mới, nếu tồn tại sẽ xóa nội dung (phổ biến)w+: đọc/ghi, tệp không tồn tại tạo mới, nếu tồn tại xóa nội dungwb: chỉ ghi nhị phân, tệp không tồn tại tạo mới, nếu tồn tại xóa nội dungwb+: đọc/ghi nhị phân, tệp không tồn tại tạo mới, nếu tồn tại xóa nội dunga: chỉ ghi, tệp không tồn tại tạo mới, dữ liệu ghi sẽ thêm vào cuối (giữ EOF)a+: đọc/ghi, tệp không tồn tại tạo mới, dữ liệu ghi thêm cuối (không giữ EOF)at+: đọc/ghi văn bản, dữ liệu ghi thêm cuốiab+: đọc/ghi nhị phân, dữ liệu ghi thêm cuối
Cách dùng
Đọc từ tệp:
1 2 | |
Ghi ra tệp:
1 2 | |
Đóng luồng chuẩn:
1 2 | |
Ghi chú
printf/scanf/cin/cout mặc định dùng stdin/stdout; sau khi chuyển hướng, các hàm này sẽ đọc/ghi vào tệp đã chuyển hướng.
Mẫu
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Hàm fopen (tùy đọc)
Hàm gần giống freopen, mở tệp và trả về con trỏ tệp
Nguyên mẫu
1 | |
Ý nghĩa tham số như freopen.
Hàm đọc/ghi cơ bản
fread/fwritefgetc/fputcfscanf/fprintffgets/fputs
Cách dùng
1 2 3 4 5 6 7 8 | |
Luồng vào/ra tệp C++ ifstream/ofstream
Cách dùng
Đọc tệp:
1 2 | |
Ghi tệp:
1 2 | |
Đóng luồng:
1 2 | |
Mẫu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Tài liệu tham khảo
- 信息学奥赛一本通
Last updated on this page:, Update history
Found an error? Want to help improve? Edit this page on GitHub!
Contributors to this page:Ir1d, cqnuljs, akakw1, MingqiHuang, Chrogeek, henrytbtrue, Planet6174, StudyingFather
All content on this page is provided under the terms of the CC BY-SA 4.0 and SATA license, additional terms may apply