C 从文件数据中读取短文件的值

C 从文件数据中读取短文件的值,c,C,我有一个以struct开头的文件(由*data指向) 我想获得内存中nsectionheaders的值,以便使用它 我试过了,但它返回了一个奇怪的大负值。如何让它返回正确的值 void read_file_header(void *data) { int offset = (sizeof(char) * 16) + (sizeof(int) * 4) + sizeof(int) + (sizeof(short) * 6); char *pointer = (char *)

我有一个以struct开头的文件(由*data指向)

我想获得内存中nsectionheaders的值,以便使用它

我试过了,但它返回了一个奇怪的大负值。如何让它返回正确的值

   void read_file_header(void *data) {

    int offset = (sizeof(char) * 16) + (sizeof(int) * 4) + sizeof(int) + (sizeof(short) * 6);
    char *pointer = (char *) data + offset;

    short num_sec_headers = 0;
    memcpy(&num_sec_headers, &pointer, sizeof(short));
    printf("The number of headers is %d\n", num_sec_headers);

   }
线路

memcpy(&num_sec_headers, &pointer, sizeof(short));
这是不正确的。您正在获取指针的地址,而不仅仅是使用指针:

memcpy(&num_sec_headers, pointer, sizeof(short));

标准中有一个安全的
偏移量
(包括
stddef.h
):


它必须是
memcpy
<代码>数据可能没有正确对齐(如果它来自
字符
缓冲区)。@user694733,对,它来自一个文件,编辑过,谢谢
   void read_file_header(void *data) {
       int offset = offsetof(ElfFileHeader, nsectionheaders);
       short num_sec_headers;

       memcpy(&num_sec_headers, (char *)data + offset, sizeof(short));
       printf("The number of headers is %d\n", num_sec_headers);
   }