c++ - 我想一次将十六进制文件读入数组 4 个字节

标签 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);
}

最佳答案

您的代码有两处错误。 首先,查一下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/

相关文章:

c++ - 找到时间 O(n) 和空间 O(1) 的重复有符号整数

c++ - 如果断言失败,策略是什么

c++ - 指针算法 C++ 的段错误

c++ - 如何改用求和语句来更改我的程序?

c - 如何使用 fork() 和 exec() 在 Mac OS 上创建进程

c - Dining Philosophers in C 内存泄漏

c++ - 错误 C2440 : '=' : cannot convert from 'int' to 'char [5]'

c++ - libjson 是否支持 64 位 int 类型?

不能使用 MS Visual C++ 在 C 中包含 iostream?

c - Language C - 获取流程所有者