0

我在 c 编程的文件中写了以下数据(这是 char* 数据的十六进制形式)。

58 c8 c3 f7 41 22 b1 72 9f 41 50 37 cb 09 d0 11 1d 5a 48 59 96 11 fa 4b fd d5 86 70 18 2c 50 2f fd 67 71 3d 20 fc 17 e1 27 f7 456 03 49c 7 6 e9 ee 24 9d 0a 06 da 6a 80 20 4d 91 e9 00 a2 ef ae db 1b 5d 39 9c a0 fe 0a 68 4e 0f 37 08 71 0f 15 a0 1a 32 e7 e6 69 53 aa ad 1e 07 8f 10

在我使用以下代码读取此文件后,它仅读取前 63 个字节(直到 00)。

    fread(file, 96, 1, infile);

输出: 58 c8 c3 f7 41 22 b1 72 9f 41 50 37 cb 09 d0 11 1d 5a 48 59 96 11 fa 4b fd d5 86 70 18 2c 50 2f fd 67 71 3d 20 fc 17 e1 27 f7 9c 03 7 6c 49 e9 ee 24 9d 0a 06 da 6a 80 20 4d 91 e9

我应该如何从文件中读取所有数据?

4

3 回答 3

3

也许您已经以文本模式打开了文件。尝试以二进制模式打开它。

于 2014-08-09T06:46:48.760 回答
3

如果您正在检查通过 读取的数据printf,并提供一个%s参数,那么 0 字节将终止输出。尝试使用%x和循环打印。

于 2014-08-09T06:50:10.820 回答
0
#include <stdio.h>
void main(){
    freopen("inp.txt", "rb", stdin);
    int var;
    while(scanf("%x", &var) == 1){
        printf("%x ",var);
    }
}

输出

在此处输入图像描述

于 2014-08-09T07:22:07.437 回答