Конкатенация строк в C - PullRequest
3 голосов
/ 28 апреля 2010

Если я хочу построить const char * из нескольких аргументов примитивного типа, есть ли способ построить строку, используя аналогичный printf?

Ответы [ 2 ]

8 голосов
/ 28 апреля 2010

Вы, вероятно, ищете snprintf .

int snprintf(char *str, size_t size, const char *format, ...);

Простой пример:

char buffer[100];
int value = 42;
int nchars = snprintf(buffer, 100, "The answer is %d", value);
printf("%s\n", buffer);
/* outputs: The answer is 42 */

У GNU тоже есть пример .

Просто добавьте, вам на самом деле не нужно использовать snprintf - вы можете использовать старый sprintf (без аргумента размера), но тогда будет сложнее обеспечить только n символы записываются в буфер. В GNU также есть хорошая функция, asprintf, которая будет выделять вам буфер.

2 голосов
/ 28 апреля 2010

Вы можете использовать sprintf, который в точности похож на printf, за исключением того, что первый параметр - это буфер, в который будет помещена строка.

Пример:

char buffer[256];
sprintf(buffer, "Hello, %s!\n", "Beta");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...