我正在寻找一种类似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;
}
但这在调用带有NULL指针的sprintf()时立即导致段错误。
有什么想法,解决方案或提示吗?放置在公共域中的类似sprintf()的解析器的一个小实现就足够了,然后我自己完成它。
非常感谢!
沧海一幻觉
相关分类