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

标签 c

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

因为我不知道一行有多长,可能真的很长,所以我不想分配一个大数组然后使用 fgets 来读取一行。另一方面,我确实需要知道每一行的结束位置。这样的一个用例是计算每行中的单词/字符。我可以分配一个小数组,用fgets读取,然后判断是否有\r, \n, 或者\r\n 出现在行中以告知是否已读取整行。但这涉及到很多strstr调用(对于\r\n,或者有更好的方法?例如从fgets的返回值?)。我也可以执行 fgetc 来一次读取每个单独的字符。但是这个函数有缓冲吗?

请建议比较这些或其他完成此任务的不同方法。

最佳答案

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

关于c - 在 C 中读取文本文件的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9057625/

相关文章:

c - 在 C 中放置新的等价物

c - C中的逻辑运算符和位分离计算(PIC编程)

c - 相同代码的段错误

c - 如何循环矩阵 block ?

c - fork() 从哪里开始

c - 确定给定用户内存大小和偏移量的所有可能的 32KB block 数

c - "Double free or corruption"函数内部错误?

c - 程序文件句柄

android - 每个类在 C 代码 (NDK) 中为自己创建静态字段

c++ - 最快的加密安全随机数生成器