#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);