gpt4 book ai didi

c - 我无法通过 g_hash_table_look_up() 获得结果

转载 作者:太空宇宙 更新时间:2023-11-04 11:20:57 25 4
gpt4 key购买 nike

我想使用字符串作为键,并找到我的值,我的值必须是一个指针。

#include <stdio.h>
#include <glib.h>
int main()
{
GHashTable *hash_list; ///denfine my hashtable
char str1[32];
sprintf(str1, "key");
char str2[32];
sprintf(str2, "key");
hash_list = g_hash_table_new(g_str_hash, g_direct_equal); ///create my hashtable
g_hash_table_insert(tcp_stream_list, str1, "ssssssssssssssss"); ///insert my key and value
char *c = (char*) g_hash_table_lookup(tcp_stream_list, (str2)); ///find my key
if (c)
{
printf("%s\n", c); ///print the string
}
return 0;
}

最佳答案

如果使用字符数组作为键,则必须使用 g_str_equal但是g_direct_equal在创建哈希表时。


如果使用 g_direct_equal,则比较的不是键值指向的数组,而是指针值本身。

因此对于使用 g_direct_equal 的哈希表(根据 OP 的来源),以下行将成功找到之前插入的条目(使用 str1):

char * c = (char*) g_hash_table_lookup(hash_list, str1); 

但是:可能只是想决定要使用什么作为 key :

  • 一个指针值(使用g_direct_equal)
  • 字符数组的内容(g_str_equal)

关于c - 我无法通过 g_hash_table_look_up() 获得结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18290414/

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