如果我想用几个基本类型参数构造一个
const char *
,有没有一种类似于printf
的方法来构建字符串?您可能正在寻找 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 */
补充一下,实际上你不需要使用snprintf
——可以使用普通的sprintf
(没有大小参数),但这样更难确保只向缓冲区写入n个字符。GNU还有一个很好的函数,asprintf
,它会为您分配缓冲区。
char buffer[256];
sprintf(buffer, "Hello, %s!\n", "Beta");
snprintf
而不是 sprintf
。 - dreamlaxfd
而不是实际指针。 - Ritwik Bosefprintf
需要一个FILE*
,而不是文件描述符,尽管你可以通过调用fdopen
轻松地从文件描述符获取一个FILE*
。 - dreamlax
asprintf
页面链接到了Obstack文档,看起来在某些情况下非常有用。 - Greg Hewgill