fprintf(long)写入8个字节,fscanf(long)读取6个字节为什么?

时间:2016-12-21 16:44:50

标签: c file compression huffman-code

我正在写一个霍夫曼算法,当我写文件头时,我存储了文件的长度,因为会有一些备用位,我需要知道在哪里停止。

当我写文件的长度时会发生这种情况:它写入8个字节,但是当我读取时,它只读取6个字节。

long totChar;
long size;

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

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

我确信这有效,因为如果我添加例如:

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

然后我开始阅读,解压缩成功。

1 个答案:

答案 0 :(得分:1)

您正在阅读和书写字符,而非二元文字。

例如,也许在您写数据时,您可以写入数字57,543,249(8位数)。但是当你读数据时,你会读到875,345(6位数)。