我希望一次将十六进制文件读入一个4字节的数组

时间:2018-02-12 14:34:15

标签: c++ c

标题说明了一切。对于这个应用程序,我想输入一个包含所有十六进制值的文件,并将其分成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);
}

1 个答案:

答案 0 :(得分:6)

您的代码有两个问题。 首先,查看fread的用法。 http://www.cplusplus.com/reference/cstdio/fread/ 您的代码正在读取4个4字节的块。根据你的问题,我的想法是你打算读取1个4字节的块。

其次,你在阅读时永远不会推进你的缓冲区,所以它总是在一开始就将数据放入缓冲区。

第三,当你打印"时,你的计数器只增加1;它应该递增4(字节)。