我正在尋找一個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