天天看點

分批讀取檔案中資料的程式流程及其C代碼實作

一、概述

在實際的軟體開發項目中,經常需要處理大量的檔案。某些檔案中包含了相當多的資料記錄數,如作者本人參與過的項目中,一個檔案中有好幾十萬條記錄。如果一次性将多條記錄讀入,則會花費大量的處理時間,且占用大量的記憶體。

為此,要求對于包含大量資料記錄的檔案進行分批讀取操作,即每一輪讀取一定數目的資料記錄,待将這些記錄處理完成之後,再讀取下一批資料。本文介紹分批讀取檔案中資料的程式流程,并給出了C程式實作。

二、總體程式流程

實作分批讀取檔案中資料的程式流程如圖1所示。

分批讀取檔案中資料的程式流程及其C代碼實作

圖1 實作分批讀取檔案中資料的程式流程

三、C程式實作

本程式命名為BatchReadFile.c,具體代碼如下:

四、程式說明

1.被讀取的檔案命名為“TestFile.txt”,存放在“/home/zhou/zhouzx/test/file/”目錄下。

2.為了友善看到效果,程式中設定每一次最大讀取條數為5,每條記錄的最大長度為50(最大長度值的設定的依據是讀取的檔案記錄的長度)。将讀取到的記錄存放到一個二維數組變量中,其中第一維是每次讀取到的記錄條數,第二維是每條記錄的長度。

3.如果一輪未讀完資料,則檔案指針會自動跳到下一次讀取的記錄的開頭。結束一輪讀取的條件有三個:已達讀取上限、記錄已全部讀完、讀取錯誤。

4.如果檔案中出現了空行,那麼程式并不會将之作為有效行而使得讀取條數增加,而是從下一個非空行開始繼續計數。

5.程式會列印出讀取的次數及每次讀取到的具體記錄資訊,友善檢視程式分批處理的執行情況。

五、程式編譯及運作結果

在Linux下,使用“gcc -g -o BatchReadFile BatchReadFile.c”指令對程式進行編譯,生成“BatchReadFile”。下面執行“BatchReadFile”指令來對程式進行測試。

1.“TestFile.txt”檔案中的内容如下:

則程式運作結果為:

2.“TestFile.txt”檔案中的内容如下:

3.“TestFile.txt”檔案中的内容如下:

4.“TestFile.txt”檔案中的内容如下:

可見,即使檔案中存在空行,程式也能夠正常處理。

六、總結

本文對分批讀取檔案中資料的程式流程進行了介紹,并給出了C程式實作。在實際的軟體開發項目中,每個檔案包含的記錄條數要多很多,但基本的程式編寫流程是一樣的。大家可以根據實際需要對本文中的程式進行修改來滿足具體的要求。

本人微信公衆号:zhouzxi,請掃描以下二維碼:

分批讀取檔案中資料的程式流程及其C代碼實作

繼續閱讀