この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"));