我不确定为什么这个 glib 哈希表无法匹配键 - 我很想知道为什么。我读取了一个分隔文件并将其插入到哈希表中,它可以读取最后一个值,但不能读取第一个值或之前的任何值。
有什么帮助吗?
我正在阅读以下格式的文本文件:
001$002$Someval
and so on....
和代码:
FILE *f = fopen(DEFAULT_MSG_CODES, "r");
/* If file does not exist return 1 */
if (f == NULL) {
return -1;
}
char *line;
char *token;
char *fields[8];
int i;
line = malloc(2048);
GHashTable* hash = g_hash_table_new(g_str_hash, g_str_equal);
g_hash_table_insert(hash, "000", "test");
while (fgets(line, 2048, f) != NULL) {
line[strlen(line) - 1] = '\0';
i = 0;
token = strtok(line, "$");
while (token != NULL) {
fields[i] = token;
i++;
token = strtok(NULL, "$");
}
printf("cid: %s eid: %s msg %s\n",fields[0],fields[1],fields[2]);
g_hash_table_insert(hash,fields[0],fields[1]);
}
free(line);
fclose(f);
printf("There are %d keys in the hash\n", g_hash_table_size(hash));
printf("There is a match %s\n", g_hash_table_lookup(hash,"003"));