标题说明了一切。对于此应用程序,我想输入一个包含所有十六进制值的文件,并将其分成 4 个字节部分。然后将它们输入到链接列表或数组中以供以后操作。由于某种原因,我的功能无法正常工作,有什么想法可以使其正常工作吗?
void readapp(){
int counter = 0;
unsigned char buffer[512];
FILE *file;
char *fileOutput;
char outname = "/home/user/blah";
file = fopen( outname, "r");
while(file != EOF){
fread(buffer, 4, 4, file);
printHex(buffer[counter]);
counter++;
}
fclose(outname);
}
最佳答案
您的代码有两处错误。 首先,查一下fread的用法。 http://www.cplusplus.com/reference/cstdio/fread/ 您的代码正在读取 4 个 4 字节 block 。从你的问题来看,我的想法是你打算读取 1 个 4 字节 block 。
其次,读取时永远不会推进缓冲区,因此它总是在一开始就将数据放入缓冲区。
第三,当你“打印”时,你的计数器只会加 1;它应该增加 4(字节)。
关于c++ - 我想一次将十六进制文件读入数组 4 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48748836/