Чтение буфера C / C ++

0

Существует функция, которую я хочу вызвать

(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, пожалуйста, предоставьте правильный способ передачи буфера этой функции

  • 1
    Попробуйте %c вместо %s В противном случае я думаю, что вы на самом деле пытаетесь написать ненулевую завершенную строку.
  • 3
    Вы используете sizeof неверно. Он вернет размер buffer переменной, а не количество байтов или элементов, на которые он указывает.
Показать ещё 3 комментария
Теги:
buffer

2 ответа

4
Лучший ответ

Вы, вероятно, хотели написать

printf("%02x", (unsigned char)buffer[i]);

Как вы передаете символы как адреса для строк, которые не будут работать.

  • 0
    Можете ли вы предоставить полный рабочий код?
  • 0
    @NarekSafaryan: Я могу - но я не буду! Вы в значительной степени получили полное решение описанной проблемы (есть еще одна проблема с размером буфера, с которым вы еще не сталкивались), и Stackoverflow не выполняет вашу домашнюю работу: мне не нужно никаких упражнений больше!
Показать ещё 1 комментарий
1

get_bytes (buffer, sizeof(buffer)); не правильно... вместо sizeof(buffer) который возвращает размер вашего указателя char, вы хотите размер того, на что он указывает, 10 в этом случае.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню