memcpy и память - PullRequest
       22

memcpy и память

0 голосов
/ 11 апреля 2020

Согласно приведенному ниже коду:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void){
  int i = 10;
  void *byte = calloc(1, 20);
  int j;
  memcpy((char*)byte, &i, sizeof(int));
  memcpy((char*)&j, byte, sizeof(int));
  printf("%d\n", (int)*byte);
  printf("%d\n", j);
  free(byte);
    return 0;
}

Проблема в строке

  printf("%d\n", (int)*byte);

Как распечатать содержимое байта?

1 Ответ

2 голосов
/ 11 апреля 2020

Использование:

 printf("%d\n", *(int *)byte);

ИЛИ

printf("%c\n", *(char *)byte);

Например, это i = 65, первая опция напечатает 65, вторая опция напечатает A.

int main(void){
  int i = 65;
  void *byte = calloc(1, 20);
  int j;
  memcpy((char*)byte, &i, sizeof(int));
  memcpy((char*)&j, byte, sizeof(int));
  printf("%d\n", *(int *)byte);
  printf("%c\n", *(char *)byte);
  printf("%d\n", j);
  free(byte);
  return 0;
}

Результат будет:

65
A
65
...