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,你需要fopen
, fgets
和printf
来做你想要的。
这是一个几乎完全符合你想要的教程 。
看看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
强有力地完成它的示例 。