Если оставить в стороне тот факт, что шестнадцатеричный эквивалент десятичного числа 20 равен 0x14, а не 0x20, если вы хотите сохранить C-строку «0x20» в одной позиции в массиве, то этот массив должен быть массивом выделенных char*
или массив char[]
, например:
Указатели:
int main(int argc, char *argv[]) {
char **b;
int i;
int a = 20;
b = calloc(5, sizeof *b);
if (b == NULL) {
printf("Malloc failed");
return 1;
}
for (i = 0; i < 5; i++) {
b[i] = malloc(sizeof b[0]);
if (b[i] == NULL) {
printf("malloc failed - fatal error");
// here should be code to free the values that WERE allocated.
return 1;
}
}
sprintf(b[0], "0x%d", a);
printf("hex: %s\n", b[0]);
printf("b[0]: %s\n", b[0]);
a = 30;
sprintf(b[1], "0x%d", a);
printf("hex: %s\n", b[1]);
printf("b[1]: %s\n", b[1]);
return 0;
}
Массивы символов:
int main(int argc, char* argv[]) {
char hex1[5];
char hex2[5];
char hex3[5];
char hex4[5];
char hex5[5];
char b[5][5] = { hex1, hex2, hex3, hex4, hex5 };
int a= 20;
sprintf(b[0],"0x%d",a);
printf("hex: %s\n",b[0]);
printf("b[0]: %s\n",b[0]);
a = 30;
sprintf(b[1], "0x%d", a);
printf("hex: %s\n", b[1]);
printf("b[1] %s\n", b[1]);
return 0;
}
Или любая разумная комбинация двух.