首頁 > 後端開發 > C++ > 主體

如何在 C 中將所有文件位元組讀入字元數組?

Mary-Kate Olsen
發布: 2024-11-01 23:09:31
原創
839 人瀏覽過

How to Read All File Bytes into a Character Array in C  ?

將所有檔案位元組擷取到C 中的字元陣列

此問題旨在了解如何將檔案的內容讀入字元陣列,繞過getline() 的限制。

解:

不要使用 getline(),考慮實作 ifstream::read() 來讀取檔案位元組流。以下步驟概述了該過程:

  1. 打開文件:
<code class="cpp">std::ifstream infile("C:\MyFile.csv"); // consider std::ios_base::binary for binary reads</code>
登入後複製
  1. 確定文件長度:
<code class="cpp">infile.seekg(0, std::ios::end);
size_t length = infile.tellg();
infile.seekg(0, std::ios::beg);</code>
登入後複製
  1. 緩衝區溢位預防:
<code class="cpp">if (length > sizeof(buffer)) {
    length = sizeof(buffer);
}</code>
登入後複製
  1. 讀取檔案:
<code class="cpp">infile.read(buffer, length);</code>
登入後複製

附加說明:

    使用eekg()和tellg()確定檔案大小不保證準確,但通常有效。
  • 以非二進位模式開啟檔案可能會導致字元轉換,從而影響產生的緩衝區大小。
  • 對於單一檔案讀取,Remy Lebeau 的答案建議使用 std::向量和 std::istreambuf_iterator 可以提高效率。
  • 如果是緩衝讀取,請考慮使用 gcount() 來追蹤實際讀取的字元數。

以上是如何在 C 中將所有文件位元組讀入字元數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!