2016-12-21 7 views
-2

私はハフマンアルゴリズムを書いています。私はファイルヘッダを書き込むときにいくつかのスペアビットが存在するためファイルの長さを保存し、どこで停止するかを知る必要があります。fprintf(long)は8バイトを書き込み、fscanf(long)は6バイトを読み込みます。なぜですか?

私は私のファイルの長さを書くとき、この代わりに起こる:それは8つのバイトを書き込みますが、私が読んだとき、それは私が私が例えば追加した場合ので、動作すると確信している6.

long totChar; 
long size; 

fprintf(outfile, "%ld", totChar); 

fscanf(cmpfile, "%ld", &size); 

のみ読み込みます:

fgetc(cmpfile); \\compressed file 
fgetc(cmpfile); 

その後、解凍が成功します。

+0

ようこそスタックオーバーフロー。 [The Tour](http://stackoverflow.com/tour)を読み、[ヘルプセンター](http://stackoverflow.com/help/asking)の資料を参考にしてください。ここに聞いてください。 –

+2

何が書いてあり、何を読んでいるのですか?私はあなたがそれをどのように結論づけたかは分かりません。 –

答えて

1

バイナリではなく、文字を読み書きしています。

たとえば、データを書き込むときに、数字57,843,249(8桁)を書き込みます。しかし、あなたがデータを読むとき、あなたは875,345(6桁)を読んでいます。

関連する問題