C语言中的字符串拼接

3
如果我想用几个基本类型参数构造一个const char *,有没有一种类似于printf的方法来构建字符串?
2个回答

8

您可能正在寻找 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,它会为您分配缓冲区。


1
不错,asprintf页面链接到了Obstack文档,看起来在某些情况下非常有用。 - Greg Hewgill

2
您可以使用sprintf,它与printf完全相同,只是第一个参数是字符串将放置的缓冲区。
例如:
char buffer[256];
sprintf(buffer, "Hello, %s!\n", "Beta");

4
我认为你的意思是sprintf,fprintf则是将内容打印到文件中。 - Paige Ruten
1
此外,使用 snprintf 而不是 sprintf - dreamlax
啊,是的。据我回忆,fprintf使用fd而不是实际指针。 - Ritwik Bose
@Mechko:fprintf需要一个FILE*,而不是文件描述符,尽管你可以通过调用fdopen轻松地从文件描述符获取一个FILE* - dreamlax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接