0
我不知道爲什麼這個glib哈希表無法匹配鍵 - 我很想知道爲什麼。我讀取分隔文件並將其插入散列表中,它可以讀取最後一個值,但不是第一個或之前的值。循環插入後C 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"));
您的正確 - 我認爲這是類似的東西,但我從來沒有使用過,直到那時。 – mcdoomington 2012-08-10 17:01:57