如何读取二进制文件并将数据存储在C中的指针中
How to read in a binary file and store the data at a pointer in C
所以我正在做一个项目,但我没能把所有的部分放在一起来完成这项工作。我们需要读入一个二进制文件的文件头并将它们存储在指定的指针中。
我正在从事的工作:
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);
}
我想知道我是否正在做我在这里尝试的事情,基本上是想一次读取一个字节到指定的指针。
请重新阅读 fread()
的手册页
这两个参数:1, sizeof(hdr),
是说读入sizeof(hdr)
字节,不是读入1字节
因为 hdr
是一个指针,所以 sizeof(hdr)
只是指针的大小。您希望 sizeof(*hdr)
或 sizeof(elf_hdr_t)
获取指针指向的 elf header 结构的大小...
所以我正在做一个项目,但我没能把所有的部分放在一起来完成这项工作。我们需要读入一个二进制文件的文件头并将它们存储在指定的指针中。
我正在从事的工作:
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);
}
我想知道我是否正在做我在这里尝试的事情,基本上是想一次读取一个字节到指定的指针。
请重新阅读 fread()
这两个参数:1, sizeof(hdr),
是说读入sizeof(hdr)
字节,不是读入1字节
因为 hdr
是一个指针,所以 sizeof(hdr)
只是指针的大小。您希望 sizeof(*hdr)
或 sizeof(elf_hdr_t)
获取指针指向的 elf header 结构的大小...