簡體   English   中英

c 將文本文件逐行讀入數組並打印

[英]c reading a text file into array line by line and print them

我有以下 C# 代碼片段

string[] lines = File.ReadAllLines(@"C:\test.txt");
for(int i=0; i<lines.Length; i++)
    Console.WriteLine(lines[i]);

你能幫我把它轉換成C嗎?

謝謝!

如果您打算使用 Ansi Standard C,則需要fopenfgetsprintf來執行您想要的操作。

這是一個教程,幾乎完全符合您的要求

查看fopenfgets函數。

特別是fgets會一直讀取直到遇到換行符,因此它非常適合一次讀取文本文件一行。

該過程應該幾乎按預期工作:

打開文件,找出編碼(ReadAllLines 為您做這件事)使用猜測的編碼讀取輸入,將其重新編碼為您的目標格式(可能是 UTF16)並將其打印到標准輸出...

就其價值而言,如果您只是將數據從一個流復制到另一個流,則無需擔心逐行執行 - 行由換行符(或回車和/或回車)決定返回/換行組合)在數據中。

如果您只是簡單地復制數據而不更改它,則將保留這些行。 為了最大限度地提高速度,您可能希望以二進制模式打開文件,並使用 fread/fwrite 一次復制相當大的數據塊(例如 4 兆字節)。

你可以用 C++ 以簡單的方式做到這一點。

ifstream input("test.in");
string line;
while(getline(input, line)) {
  //Your code for the current line
}

使用fgets導致棘手的邊緣情況:

  • 如果一行的長度大於固定寬度緩沖區的大小怎么辦?
  • 如果文件不以換行符結尾怎么辦?
  • 如果最后一行正好適合緩沖區而不導致設置文件結束狀態怎么辦?

在我的博客上,我發布了一個示例,說明如何使用fgets穩健地做到這一點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM