Существует функция, которую я хочу вызвать
(void) get_bytes (void * ptr, int length)
функция принимает два аргумента: первый - это буфер (по этому аргументу данные будут получены) второй длины данных, которые я хочу прочитать.
Задача состоит в том, чтобы прочитать 10 байт, используя эту функцию, и буфер печати на экране (в форме шестнадцатеричного).
Я пробовал этот путь
char *buffer = malloc(sizeof(char) * 10);
get_bytes (buffer, sizeof(buffer));
for (int i = 0; i < 10; i++) {
printf("%s", buffer[i]);
}
но я получаю исключение из-за плохого доступа к выполнению на линии printf, пожалуйста, предоставьте правильный способ передачи буфера этой функции
Вы, вероятно, хотели написать
printf("%02x", (unsigned char)buffer[i]);
Как вы передаете символы как адреса для строк, которые не будут работать.
get_bytes (buffer, sizeof(buffer));
не правильно... вместо sizeof(buffer)
который возвращает размер вашего указателя char, вы хотите размер того, на что он указывает, 10
в этом случае.
%c
вместо%s
В противном случае я думаю, что вы на самом деле пытаетесь написать ненулевую завершенную строку.sizeof
неверно. Он вернет размерbuffer
переменной, а не количество байтов или элементов, на которые он указывает.