c - 将保存未知长度的字符串并能够稍后删除它们的数据结构

标签 c arrays memory data-structures dynamic-memory-allocation

存储未知数量的值然后删除许多值的最佳数据结构是什么?

我正在读取一个文件,每一行都作为 C 字符串存储在一些更大的数据结构中。每行长度可能少于 20 个字符,一个示例文件有 300000 行。无论我要使用什么数据结构,它的大小只会在最初创建时增加;从那里开始,它的尺寸只会缩小。我会用什么?在 Java 中我会使用数组列表或者 vector 。动态数组可以工作吗?如果可以,它会是什么样子?

char aLine[21];
char *data = malloc(aLine);
fp = fopen("datafile", "r");
if(fp== NULL)
    exit(EXIT_FAILURE);
while(fscanf(fp, "%20s", aLine) == 1)
{
    data = aLine;
    realloc(data, sizeof(data)+sizeof(aLine));
}

我想使用标准 C 和 POSIX 功能,因此如果拥有列表意味着使用第三方库,我认为这不是一个选择。

编辑:创建链接列表并不完全是微不足道的,第二个最佳选择是什么?

最佳答案

在这种情况下,您应该使用 linked list 。你必须create a linked list在指针和结构的帮助下。

关于c - 将保存未知长度的字符串并能够稍后删除它们的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19066062/

相关文章:

c++ - 有比 JPEG 更快的有损压缩吗?

用于阅读 doc、docx、pdf 的 C 程序

python - 使用 Numpy 计算相关系数

java - 将 m.group(1) 转换为字符串数组

java - 如何在 Java 数组中存储 1 亿个整数?

c++ - 编译器在编译 C++ 时是否用它的值替换常量变量

c++ - C 删除链表中的节点

c - 尝试释放二维数组时堆损坏

arrays - 通过 requestJS 发送 JSON 对象和图像文件数组的 POST 请求

c - 如何解决 "invalid write size of n bytes"和 "Address ___ is n bytes after a block of size n alloc' d”?