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

时间:2009-12-15 21:43:59

标签: c# c arrays file

我有以下c#代码段

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

你能帮我把它转换成C.

谢谢!

6 个答案:

答案 0 :(得分:2)

如果您打算使用Ansi Standard C,则需要fopenfgetsprintf来执行您想要的操作。

这是a tutorial that does almost exactly what you want

答案 1 :(得分:1)

查看fopenfgets函数。

fgets特别会在读取换行符之前读取,因此它非常适合一次读取一行文本文件。

答案 2 :(得分:0)

这个过程应该像预期的那样工作:

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

答案 3 :(得分:0)

只是为了它的价值,如果您只是将数据从一个流复制到另一个流,则无需担心逐行执行 - 行由新行字符(或回车符和数据中的/或回车/换行组合)。

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

使用fgets邀请棘手的边缘案例:

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

在我的博客上,我发布了example of how to do it robustly with fgets