【发布时间】:2013-03-19 19:58:21
【问题描述】:
所以我不完全确定如何使用 fread。我有一个 little-endian 的二进制文件,需要转换为 big-endian,但我不知道如何读取该文件。这是我到目前为止所拥有的:
FILE *in_file=fopen(filename, "rb");
char buffer[4];
while(in_file!=EOF){
fread(buffer, 4, 1, in_file);
//convert to big-endian.
//write to output file.
}
我还没有写任何其他东西,但我只是不确定如何让 fread 进入“进步”,可以这么说。任何帮助将不胜感激。
【问题讨论】:
-
完成程序并运行它!
fread将从上次循环结束的地方读取。您应该检查来自fread的返回值。infile不太可能等于EOF。 -
一方面,“rb”表示R读取Binary,因此您的数组应该是int类型,而不是char。
-
我其实不同意。数组应该是字符。二进制字符只有一个字节,而整数是 4 个字节。因此,在这种情况下,使用 char 数组会更好,因为一个 char 代表一个字节。