gpt4 book ai didi

c - fseek 从一行到另一行

转载 作者:行者123 更新时间:2023-11-30 17:43:14 24 4
gpt4 key购买 nike

我想从 file.txt 中读入缓冲区几行。

目前,我fseekfread 循环中的每一行。我知道这些线是什么,因为我保留了它们的索引列表。因此,如果我想读取第 5 行到第 10 行,我就确切地知道 file.txt 中这些行的内容。我永远不需要阅读整个文件。

我想做这样的事情:

char buffer[2000]; 
FP *fp;

fseek(fp, start_index, end_index, SEEK_SET);
fgets(buffer, 2000, fp);

我该如何做这样的事情? fseek 不需要那么多参数。

<小时/>

文本文件看起来像这样

apple: a fruit.

apple pie: a pie made from apples.

最佳答案

如果我理解正确的话,您所要做的就是计算该部分的长度并阅读它,而不是最多 2000 个字符:

fseek(fp, start_index, SEEK_SET);
fread(buffer, sizeof(char), end_index - start_index, fp);

当然,请记住,我没有包含任何长度/错误检查,也没有缓冲区的空终止符等。您可以动态分配缓冲区来解决这个问题:

long len = end_index - start_index;
char *buffer = new buffer[len + 1];

fseek(fp, start_index, SEEK_SET);
fread(buffer, sizeof(char), len, fp);
buffer[len] = 0;

关于c - fseek 从一行到另一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com