массив символов инициализируется строкой и переменной int (c)

#arrays #c #initialization

#массивы #c #инициализация

Вопрос:

я хотел бы инициализировать массив символов следующим образом:

 char msg[] = "something 12";
 

Пока это работает, но для большей гибкости моей функции я хотел бы использовать целочисленную переменную вместо фиксированного «12».

Поэтому я хотел бы использовать что-то вроде:

 int value = 12;
char msg[] = ("something %d", value);
 

Но, похоже, это не работает. Есть ли разумный способ использовать гибкую инициализацию?

Спасибо за вашу помощь.

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

1. Разве нормальность snprintf() не удовлетворяет вас?

2. попробовал на моей консоли, кажется, работает. спасибо, это была именно та функция, которую я искал.

Ответ №1:

Вы можете использовать snprintf() .

 int value = 12;
const char* format = "something %d";
int len = snprintf(NULL, 0, format, value);
char msg[len   1]; /* Variable-Length Array (C99) */
snprintf(msg, len   1, format, value);
 

Ответ №2:

Вы можете использовать sprintf для создания своей строки:

 char result[100];
int value = 12;

sprintf(result, "Something %d", value);

printf("%sn", result);