我編碼霍夫曼樹沒有問題,但現在我期待在文件和樹中添加僞EOF,所以我知道何時停止從文件中讀取。霍夫曼編碼 - 僞EOF
我完全理解了僞EOF的概念。我也明白沒有ASCII值大於255的字符。
我不完全理解的是將該字符添加到輸入文件。如果它必須是非ASCII字符(因爲它們可以在文件中),那麼我應該添加什麼字符來表示EOF?
我編碼霍夫曼樹沒有問題,但現在我期待在文件和樹中添加僞EOF,所以我知道何時停止從文件中讀取。霍夫曼編碼 - 僞EOF
我完全理解了僞EOF的概念。我也明白沒有ASCII值大於255的字符。
我不完全理解的是將該字符添加到輸入文件。如果它必須是非ASCII字符(因爲它們可以在文件中),那麼我應該添加什麼字符來表示EOF?
我不確定你真的明白什麼是「僞EOF」。
首先,根據註釋,沒有ASCII字符大於256.也不需要。
你被要求做的是在代碼中模擬這個。假設你有一個函數讀取一個字符:
int getchar(fhandle);
此功能將0返回值255來表示ASCII字符。它也可以返回一個特殊的值,例如-1來表示文件結束。這個特殊的值是「僞EOF」。
此字符不在文件中。當文件中沒有更多字符時,它由函數返回。
我看到你在做什麼,但我們被指示添加一個頻率爲1,值爲n + 1的葉節點,其中n是ASCII字符(255)的最大值。那麼,我怎麼才能把它添加到樹中,謝謝你的迴應。 –
爲什麼在霍夫曼樹中添加n + 1的值會有問題?沒有理由樹不能包含> = 256的值。 – rcgldr
我同意。說明似乎很清楚。只要確保包含該值的數據項是一個int,而不是char。 –
我不知道你在說什麼,並且沒有ASCII字符> 256。 – deviantfan
是的,我明白了。我只是不確定用什麼作爲EOF字符,因爲ASCII字符都可以出現在文件中。 –
我還是不知道你在說什麼。問題是你不知道文件的大小? – deviantfan