如何读取二进制文件并将数据存储在C

时间:2018-09-23 01:54:36

标签: c file-io elf

因此,我正在从事一个项目,但未能将所有内容放在一起进行这项工作。我们需要读取二进制文件的头并将其存储在指定的指针处。

我正在使用的功能:

int read_header (FILE *file, elf_hdr_t *hdr);

我了解如何将信息传递给函数,但我不了解如何读入指定的指针。我整天都在尝试查找信息,但无法真正找到我的出发点...感谢您提供的任何指导。

到目前为止,我的代码:

int read_header (FILE *file, elf_hdr_t *hdr)    
{
    int read;
    read = fread(hdr, 1, sizeof(hdr), file);
    fclose(file);
}

我想知道我是否在做我在这里尝试的事情,基本上是想一次读取一个字节到指定的指针。

2 个答案:

答案 0 :(得分:1)

请重新阅读fread()的MAN页

这两个参数:1, sizeof(hdr),表示要读取sizeof(hdr)个字节,而不要读取1个字节

答案 1 :(得分:1)

由于hdr是指针,所以sizeof(hdr)只是指针的大小。您希望sizeof(*hdr)sizeof(elf_hdr_t)获得指针指向...的elf标头结构的大小。