我正在寻找一个sprintf() - 类似于自动分配所需内存的函数的实现。所以我想说带有自动内存分配的sprintf()?
char* my_str = dynamic_sprintf("Hello %s, this is a %.*s nice %05d string", a, b, c, d);
和my_str检索保存此sprintf()结果的分配内存的地址。
在另一个论坛上,我读到这可以这样解决:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
char* ret;
char* a = "Hello";
char* b = "World";
int c = 123;
int numbytes;
numbytes = sprintf((char*)NULL, "%s %d %s!", a, c, b);
printf("numbytes = %d", numbytes);
ret = (char*)malloc((numbytes + 1) * sizeof(char));
sprintf(ret, "%s %d %s!", a, c, b);
printf("ret = >%s<\n", ret);
free(ret);
return 0;
}
但在调用的sprintf()与NULL指针时,这immediatelly导致段错误。
因此,任何想法,解决方案或技巧?一个放在公共领域的sprintf()类似的解析器的小实现已经足够了,然后我可以自己完成。
非常感谢!
谁给了你这个建议可能意味着你应该使用'snprintf',而不是'sprintf'。 – 2010-09-23 00:08:58