在C中读取文本文件的好方法

时间:2012-01-29 23:08:25

标签: c

我需要阅读一个可能包含长行文本的文本文件。我在想最好的方法。考虑到效率,即使我在C ++中这样做,我仍然会选择C库函数来执行IO。

因为我不知道一行是多长时间,可能真的很长,我不想分配一个大数组,然后使用fgets来读取一行。另一方面,我确实需要知道每条线的结束位置。一个用例是计算每行中的单词/字符。我可以分配一个小数组并使用fgets进行阅读,然后确定该行中是否显示\r, \n\r\n来判断整行是否有已被阅读但这涉及很多strstr次调用(对于\r\n,或者有更好的方法?例如来自fgets的返回值?)。我也可以fgetc一次读取每个字符。但是这个功能有缓冲吗?

请建议比较执行此任务的这些或其他不同方式。

1 个答案:

答案 0 :(得分:2)

执行I / O的正确方法取决于您要对数据执行的操作。如果你在计算单词,基于行的输入没有多大意义。更自然的方法是使用fgetc并一次处理一个角色让stdio担心缓冲。只有当你需要同时处理内存中的整行才能处理它时,你应该实际分配一个足够大的缓冲区来容纳它。