Итак, я работаю над проектом, и мне не удается собрать все вместе, чтобы заставить его работать. Нам нужно прочитать заголовок двоичного файла и сохранить их по указанному указателю.

Функция, над которой я работаю:

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

Я хочу знать, делаю ли я то, что пытаюсь здесь, в основном хочу читать по одному байту до указанного указателя.

-1
NeerP84 23 Сен 2018 в 04:54

2 ответа

Лучший ответ

Поскольку hdr является указателем, sizeof(hdr) будет просто размером указателя. Вы хотите sizeof(*hdr) или sizeof(elf_hdr_t) получить размер структуры заголовка elf, на которую указывает указатель ...

1
Chris Dodd 23 Сен 2018 в 07:16

Пожалуйста, перечитайте страницу MAN для fread()

Эти два параметра: 1, sizeof(hdr), говорят читать в sizeof(hdr) байтах, а не в 1 байтах

1
user3629249 23 Сен 2018 в 06:28