c逐行将文本文件读入数组并打印出来

我有以下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来做你想要的。

这是一个几乎完全符合你想要的教程 。

看看fopen和fgets函数。

特别是fgets将会读取直到达到换行符,因此它非常适合一次读取一行文本文件。

该过程应该按预期工作:

打开文件,找出编码(ReadAllLines为你做的那样)用猜测的编码读取输入,将其重新编码为目标格式 – 可能是UTF16 – 并将其打印到stdout ……

只是为了它的价值,如果您只是将数据从一个流复制到另一个流,则无需担心逐行执行 – 行由新行字符(或回车和/或运输)确定数据中的return / line feed combos)。

如果您只是复制数据而不更改它,则会保留这些行。 为了最大化速度,您可能希望以二进制模式打开文件,并使用fread / fwrite一次复制相当大的数据块(例如4兆字节)。

你可以用C ++以简单的方式完成它。

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

使用fgets引发棘手的边缘情况:

  • 如果一条线的长度大于固定宽度缓冲区的大小怎么办?
  • 如果文件没有以换行符结尾怎么办?
  • 如果最后一行完全适合缓冲区而不导致文件结束状态设置怎么办?

在我的博客上,我发布了一个如何使用fgets强有力地完成它的示例 。