Работа с указателем в C: несовместимое преобразование целого числа в указатель

#c

#c

Вопрос:

Это точная ошибка

 incompatible integer to pointer conversion assigning to 'char *' from 'char'
  

Это мой код, в котором я пытаюсь сделать str равным hexarr2, но не уверен, как это сделать.

 void int_to_hex(unsigned int x, char *str)
{

  char hexarr2[9] = {'0','0','0','0','0','0','0','0',' '};

  for (j = 0 ;j<9;j  ){
    str = hexarr2[j];
    str  ;
  }
    
}
  

Комментарии:

1. Что вы не понимаете в сообщении об ошибке?

2. Изменить str на *str

3. Другой способ: str[j] = hexarr2[j]; и удалить str .

Ответ №1:

Если вы пытаетесь скопировать символы из hexarr2 в str , проще всего сделать:

 void int_to_hex(unsigned int x, char *str)
  {
  char hexarr2[9] = {'0','0','0','0','0','0','0','0',' '};

  for (j = 0 ; j < sizeof(hexarr2) ; j  )
    str[j] = hexarr2[j];

  str[sizeof(hexarr2)] = '';
  }
  

Предполагается, что буфер, на который указывает, str достаточно велик, чтобы вместить все символы hexarr2 .