Nền tảng lập trình & môi trường
4. Đọc/ghi qua FILE — phần quan trọng nhất
Đề HSG gần như luôn cho dữ liệu trong một file (ví dụ BAI1.INP) và yêu cầu ghi kết quả ra file khác (ví dụ BAI1.OUT). Hình dưới minh hoạ luồng dữ liệu: chảy từ file vào chương trình, được xử lý, rồi chảy ra file.
INPUT.TXT, tính toán, rồi ghi kết quả ra OUTPUT.TXT. Đề thi chấm bằng cách so sánh file kết quả của bạn với đáp án.Cách gọn nhất: dùng freopen để chuyển hướng cin/cout sang file. Chỉ cần thêm hai dòng ở đầu main, phần còn lại viết y như khi nhập từ bàn phím:
#include <iostream>
using namespace std;
int main() {
freopen("BAI1.INP", "r", stdin); // tu gio cin doc tu file BAI1.INP
freopen("BAI1.OUT", "w", stdout); // tu gio cout ghi ra file BAI1.OUT
int a, b;
cin >> a >> b;
cout << a + b << "\n";
return 0;
}
Cách khác: ifstream / ofstream
Bạn cũng có thể tạo một luồng đọc và một luồng ghi riêng. Cách này không động đến cin/cout:
#include <fstream>
using namespace std;
int main() {
ifstream fin("BAI1.INP");
ofstream fout("BAI1.OUT");
int a, b;
fin >> a >> b;
fout << a + b << "\n";
return 0;
}
Dùng freopen hay ifstream đều được. freopen tiện vì code thân bài giống hệt bản nhập từ bàn phím.
Ba lỗi file làm mất điểm oan
- Sai tên file — đề ghi
BAI1.INPmà bạn gõbai1.inphoặcBAI1.IN. Phải đúng từng ký tự. - Quên ghi ra file — in ra màn hình thay vì file, máy chấm không thấy kết quả.
- Sai định dạng xuất — thừa/thiếu dấu cách, dòng trống. In đúng như đề mô tả.