9/5/15

Cách viết một hàm đọc file cơ bản trong C/C++

Có nhiều cách viết hàm đọc file khác nhau, tùy theo yêu cầu bài toán và ý đồ người lập trình. Tuy nhiên, mình sẽ giới thiệu cách viết đơn giản nhất mà đa số trường hợp người ta hay dùng trong đọc file văn bản dạng text.

Bạn có thể sử dụng con trỏ FILE* hoặc trong C++ bạn còn có thể sử dụng đối tượng fstream để đọc ghi file (nhớ #include<fstream> trước khi khai báo đối tượng fstream). Các ví dụ bên dưới mình sử dụng fstream trong C++, về con trỏ FILE* thì tương tự.

Nguyên tắc chính là kiểm tra xem file đã được mở chưa. Sau đó tiến hành đọc file để ghi vào mảng, danh sách liên kết hoặc in ra màn hình, v.v... Cuối cùng là đóng file để kết thúc việc đọc file.

Tùy vào cấu trúc file văn bản mà ta xử lý khác nhau trong phần đọc file.

Dưới đây là ví dụ:
Mình có file D:\Test.txt có nội dung:
1 2 5 7 3 5 7 8 9
Yêu cầu đọc và xuất các số trên ra màn hình.
#include<fstream>
#include<iostream>
using namespace std;
void ReadFile(char* path)
{
   int n;
   fstream file(path, ios::in); //vừa khai báo vừa mở file
   if (!file.is_open()) //kiểm tra file đã được mở chưa
      cout<<"Could not open file!"<<endl;
   else
   {
      //xử lý đọc file ở đây
      while(!file.eof())
      {
         file>>n; //đọc file vào biến n
         cout<<n<<" ";
      }
      file.close(); //đóng file khi hoàn tất
   }
}

Ví dụ khác:
File D:\Test.txt có dòng đầu tiên là số lượng phần tử mảng, dòng thứ 2 là các phần tử
5
1 2 3 4 5
Yêu cầu đọc và lưu vào mảng.
#include<fstream>
#include<iostream>
using namespace std;
void ReadFile(char* path, int *a, int &n)
{
   fstream file(path, ios::in); //vừa khai báo vừa mở file
   if (!file.is_open()) //kiểm tra file đã được mở chưa
      cout<<"Could not open file!"<<endl;
   else
   {
      //xử lý đọc file ở đây
      file>>n; //đọc số đầu tiên
      for(int i = 0; i< n;i++)
         file>>a[i]; //đọc các số kế tiếp
      file.close(); //đóng file khi hoàn tất
   }
}

2 nhận xét:

  1. Nặc danh08:29 5/11/19

    anh cho em hỏi chỗ char* path thì path là để lm gì ạ?

    Trả lờiXóa
    Trả lời
    1. path là đường dẫn của file đó bạn

      Xóa