0
你好,我插入一些值到一個哈希表(已實現的哈希表以及測試和工程) 我用的fscanf文件中讀取和存儲字符串和浮子中變量的值。奇怪的指針行爲while循環
文本文件看起來像這樣:
die 0.000000
laun -4.102468
des -7.952615
verliebt -6.080813
ein -8.645762
schaferspiel -4.315029
in -8.645762
vers -5.755391
und -8.645762
akt -3.909564
person -8.645762
egl -8.645762
像這樣的作品讀:
//scan text for scheme WORDSTEM PROBABLITIY
r = fscanf(text, "%s %f\n", wordstem, &prob);
//doing some pointer madness!!!
pProb = &prob;
float PpProb = *pProb;
float *PPpProb = &PpProb;
char *cpStr = strdup(wordstem);
hashtable_access(wordHash, cpStr,PPpProb); //insert into hashtable_t
while (r != EOF){
float prob1;
r = fscanf(text, "%s %f\n", wordstem, &prob1);
//printf("%f",prob1);
char *cpStr1 = strdup(wordstem);
float a = 0;
float *PpProb1 = &a;
float *pProb1 = &prob1;
*PpProb1 = *pProb1;
hashtable_access(wordHash, cpStr1,PpProb1);
pProb1 = NULL;
//do till EOF
}
float *pHashProb = (float *)hashtable_access(wordHash, "schaferspiel", NULL);
float hashProb = *pHashProb;
printf("%f\n",hashProb);
的問題是,對於第一項的哈希返回「死」的正確值,但schaferspiel和第一個返回後的每個其他鍵總是返回最後一個值。
哈希表需要保存的指針。我不確定我做錯了什麼,因爲我認爲我複製了prob1的值。
有人可以幫我。
WOW!這就像一個魅力!花費數小時修復它!非常感謝你! – arnoapp