我試圖解析一個文本文件,並將每個不同的單詞添加到哈希表中,將單詞作爲關鍵字,並將它們的頻率作爲值添加。問題被證明是閱讀部分:該文件是一個非常大的「普通」文本文件,因爲它具有標點符號和特殊字符。我想把所有非字母字符作爲字邊界來處理。我有一些基本的東西有此打算:C - 讀取非字母字符作爲字邊界
char buffer[128];
while(fscanf(fp, "%127[A-Za-z]%*c", buffer) == 1) {
printf("%s\n", buffer);
memset(buffer, 0, 128);
}
然而,電抗器時,它實際會達到由空格前面有一個非字母字符(如「的,貓(棕色)」將被讀爲「貓是「)。我知道這個代碼的問題是什麼,但我不知道如何繞過它。如果只是整行閱讀並手動進行解析,我會更好嗎?我正在嘗試scanf
,因爲我覺得這是一個非常好的候選人,你可以使用格式字符串來處理迷你正則表達式。
''%127 [A-Za-z]%* [^ A-Za-z]「'作爲一個簡單的修復。 – BLUEPIXY
謝謝!這做了我所需要的。 –
使用'while(fscanf(fp,「%* [^ A-Za-z]」),fscanf(fp,「%127 [A-Za-z]」,buffer)== 1 {'很好地處理''%127 [A-Za-z]%* [^ A-Za-z]「'不是。這兩種方法都可以很好地處理最後一個字母組,其次是非字母 – chux