【发布时间】:2014-08-11 14:54:40
【问题描述】:
我正在尝试将文件的内容读入结构。 结构如下所示:
typedef struct{
unsigned char e_ident[EI_NIDENT] ;
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
} Elf32_Ehdr;
extern Elf32_Ehdr elfH;
它基本上是一个 ELF 头文件。所以,无论如何我想将文件的内容加载到这个结构中。
函数如下所示。
Elf32_Ehdr elfH;
int load(char* fname){
FILE* file = fopen(fname,"r");
if(NULL == file) return 0;
fread(&elfH, 1, 52, file);
fclose(file);
return 1;
}
它似乎无法正常工作。 elfH 的内容并不如预期。 可能是什么问题? 我应该
【问题讨论】:
-
为什么不用
sizeof elfH而不是62? -
您能否提供更多关于不符合预期的信息?当你将结构体的内存位置与文件中的数据进行比较时会发生什么?
-
可能是字节序? (不确定 ELF 标头字段是小端还是大端。)
-
Elf32_Ehdr elfH;-->>fread(&elf, 1, 62, file);名称不匹配。此外,声明与extern Elf32_Ehdr elfH;冲突 -
你在什么平台上?