c - 如何 fgets() C 文件中的特定行?

标签 c filestream fgets

因此,我试图找到一种方法来 fgets() C 文本文件中的特定行,以将该行的内容复制到更永久的缓冲区中:

基本上,我想知道是否有一种方法可以在不使用类似于以下代码的情况下做到这一点:

FILE *fp;
fp = fopen(filename, "r");

char line[256];
char * buffer;
int targetline = 10;
while( targetline > 0)
{
    fgets(line, 256, fp)
}

buffer =(char*)malloc(sizeof(char) * strlen(line));
strcpy(buffer, line);

所以基本上我不想遍历文件 n-1 次只是为了到达第 n 行......它看起来效率不高(而且,这是家庭作业,我需要得到 100 % 哈哈)。

如有任何帮助,我们将不胜感激。

最佳答案

除非您对文件有更多了解,否则您不能随意访问特定行。新行由行结束字符分隔,通常可以出现在任何地方。文本文件不带有允许您跳到第 nth 行的mapindex

如果您知道文件中的每一行长度相同,那么您可以使用随机访问跳转到特定行。如果没有此类额外知识,您别无选择,只能遍历整个文件,直到到达所需的行。

关于c - 如何 fgets() C 文件中的特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8175144/

相关文章:

c# - 使用 C# 将 MemoryStream 转换为 FileStream?

Node.js readStream 用于大文件末尾

c - c 中的文本文件(int、string、string 和 float)的 fscanf 和 fgets

c - 控制台读取错误

c - Keil C 中的 malloc 不会失败

c++ - exec() 更改程序镜像后 malloc 的内存会发生什么?

c - 了解 SLIST -queue.h

将17位数据组合成字节数组

c++ - 在 C++ 中重用文件流?

c - 如何使用 fgets 从键盘扫描格式化输入(字符串)?