当前位置: 首页 > 知识库问答 >
问题:

c:读/写哈希表到文件

穆华彩
2023-03-14

我正在尝试使用 fwrite 将哈希表写入 C 文件并使用 fread 读取它。我有这个结构:

struct table {
    struct person *person_table[SIZE];
};
static struct table hashtable;

当我使用恐惧时,我有

    fread(&hashtable, sizeof(struct table), 1, file)

和 fwrite:

    fwrite(&hashtable, sizeof(struct table), 1, file)

但是,我无法在读写后正确访问数据。问题是什么?

共有1个答案

周奇
2023-03-14

您不会将哈希表的数据写入文件。相反,您将指针中包含的地址写入结构 person 元素,这些地址在反序列化后无效。

您还需要将数据写入文件(伪代码,假设struct-person不包含其他指针):

for (person_pointer in person_table) {
  fwrite(person_pointer, sizeof(person), 1, file);
}
 类似资料:
  • 主要内容:Hashtable 类中的属性,Hashtable 类中的方法在 C# 中,Hashtable(哈希表) 类表示根据键的哈希代码进行组织的键(key)/值(value)对的集合,可以使用键来访问集合中的元素。也就是说当您需要使用键来访问指定元素时,可以选择使用哈希表。 Hashtable 类中的属性 下表中列出了 Hashtable 类中一些常用的属性: 属性 描述 Count 获取哈希表中包含的键值对的个数 IsFixedSize 获取一个值,用来表示哈希

  • REDIS_HASH (哈希表)是 HSET 、 HLEN 等命令的操作对象, 它使用 REDIS_ENCODING_ZIPLIST 和 REDIS_ENCODING_HT 两种编码方式: 字典编码的哈希表 当哈希表使用字典编码时, 程序将哈希表的键(key)保存为字典的键, 将哈希表的值(value)保存为字典的值。 哈希表所使用的字典的键和值都是字符串对象。 下图展示了一个包含三个键值对的哈希

  • Hashtbl 模块 Hashtbl模块实现了一个高效的,可变的查询表。如下创建一个哈希表: # let my_hash = Hashtbl.create 123456;; val my_hash : ('_weak1, '_weak2) Hashtbl.t = <abstr> 这个123456是哈希表的初始大小。这个值可以是你对数据量的一种猜测,但是哈希表有可能会 随着数据量的增多而变大,因此

  • 哈希表 通过最简单的取模运算作为哈希算法 class HashNode(object): def __init__(self, id, data): self.id = id self.data = data self.next = None def __str__(self): return '(%d,%s)' %

  • 问题内容: 当大小超过maxthreshold值时,如何在哈希表或哈希表中进行重新哈希处理? 是否所有对都已复制到新的存储桶阵列中? 编辑: 重新哈希后,同一存储桶(位于链接列表中)中的元素会发生什么情况?我的意思是说,他们在重新哈希处理后会留在同一个桶中吗? 问题答案: 问题中的最大阈值称为负载系数。 建议负载系数约为0.75。负载因子定义为(m / n),其中n是哈希表的总大小,m是在需要增加

  • 问题内容: 我有一个带有字符串键和字符串值的哈希图。它包含大量键及其各自的值。 例如: 我想将此哈希图写入一个csv文件,以便我的csv文件包含以下行: 我在这里使用supercsv库尝试了以下示例:http ://javafascination.blogspot.com/2009/07/csv-write- using-java.html 。但是,在此示例中,您必须为要添加到csv文件的每一行创