我正在嘗試編寫一個C程序來計算某個短語中某些字母的頻率。程序按字符讀取短語(通過存儲數組中的字符的mmap
),並將當前字母與所需字母進行比較。如果匹配,則計數器遞增。但是,當運行我的代碼時,我得到了奇怪的結果。頻率不會遞增,因爲在調用strcmp
時,字母不匹配,即使它們在調試中匹配。我的程序中發生了什麼導致這種行爲?C - strcmp()無法正常工作
char* data; /* input contents from mmap */
char* currChar; /* character being compared to */
char inChar; /* character being read */
...
do {
/* get character */
inChar = 0;
inChar = data[i];
/* debug */
printf("data[i] = %c, inChar = %c, &inChar = %c, currChar = %s\n",
data[i], inChar, &inChar, currChar);
/* if match */
if (strcmp(&inChar, currChar) == 0) {
/* increment frequency */
freq++;
}
/* increment position */
i++;
} while (inChar != 0);
下面是在嘗試計算單詞「和」中「a」的頻率時的示例輸出。
data[j] = a, inChar = a, &inChar = S, currChar = a
data[j] = n, inChar = n, &inChar = S, currChar = a
data[j] = d, inChar = d, &inChar = S, currChar = a
0 instances of a
你試過只檢查'INCHAR == * currChar'呢? – Baldrick
currChar甚至沒有啓動。比較字符只需使用'=='運算符。 –
只要有人看到某個標題說某個工具無法正常工作,那麼發生這種情況的可能性就是99.9%,即海報是新手,並且該工具正在被濫用。爲什麼會嘗試使用字符串比較函數來比較各個字符? –