gpt4 book ai didi

C - 将非常大的文件中的行插入到数组中

转载 作者:行者123 更新时间:2023-12-02 19:48:14 25 4
gpt4 key购买 nike

首先,我是 C 的新手,我知道这是一个非常重复的问题,但是,我找不到任何可以帮助我解决问题的东西。

这是我的代码:它接受一个文本文件并将每一行存储在一个数组中。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
FILE *file;
file = fopen("test.txt", "r");
char buffer[600];
char *lines[10000];
int i = 0;

while(fgets(buffer, sizeof(buffer), file))
{

lines[i] = malloc(sizeof(buffer));
strcpy(lines[i], buffer);
i++;
free(lines[i]);
}

fclose(file);


return 1;
}

这适用于小型文本文件。

但是它不适用于大的(甚至设置缓冲区和具有更大数字的行)。实际上,如果我将 buffer[] 和 *lines[] 增加 1000000 个字节,它不会提供任何东西(如果我理解得很好,它会提供未定义的行为)。我需要使用 100.000 行可变长度行的文件来完成这项工作,

那么,我如何声明一个非常大的数组以便我可以传递每一行?因为,正如我所揭示的,它不适用于大文件。

感谢任何帮助!

最佳答案

char *lines[10000]; 只是一个指向行的指针数组,而不是要存储实际行的数组(内存)。

malloc 正在为每一行分配一 block 内存,您应该仅在使用完该 block 后才调用 free

如果您删除 free,您的解决方案将起作用,但您需要记住在其他时间点 free

关于C - 将非常大的文件中的行插入到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58831153/

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