【发布时间】:2021-05-04 16:03:51
【问题描述】:
我有一个文件是由与我的代码在同一台 PC 上的应用程序创建的。这在开头有以下内容:
$ od -c save.data
0000000 \0 \0 \0 006 \0 \0 \0 \0 D \0 V \0 E \0 1
.
.
在C中使用以下代码读取文件:
FILE *encfile;
char inba[8192]; // input file is < 500 bytes so this is plenty big enough
memset(inba, 0, sizeof(inba));
encfile = fopen(argv[1], "rb");
int br = fread(inba, 1, 8192, encfile);
printf ("Bytes read: %d\n", br);
上面正确打印Bytes read: 409。
问题在于inba 变量为“空”,因为我认为读取的第一个字节是0,它被视为字符串的结尾。文件中有许多0 值字节。
如何让 C 将其视为 409 字节数组?
数据将作为char * 变量传递给其他函数。
这是字节序问题吗?
【问题讨论】:
-
您的问题似乎在于“其他功能”的使用,而不是似乎工作正常的
fread。
标签: c binaryfiles fread