如果你想在c中動態分配內存的字符串生成器,我發現http://linux.die.net/man/3/vasprintf是有用的。
實施例:
#include <stdio.h>
int i;
printf("//Simple dynamic string builder:\n");
char *strs[6] = {"I","am","an","array","of","strings"};
char *buf = "["; // open bracket
for (i=0;i<6;i++) {
// Dynamically build and allocate memory
asprintf(&buf,"%s%s",buf,strs[i]);
if(i!=5) { // Add a comma , after each but skip the last
asprintf(&buf,"%s,",buf);
}
}
asprintf(&buf,"%s]",buf); // closing backet
printf("\"%s\"\n",buf);
輸出是
//Simple string builder:
"[I,am,an,array,of,strings]"
所以char *buf
動態由asprintf
膨脹,並且通過本身格式化成asprintf
語句構建。
不,請看例子。緩衝區將被修改。 C中的許多函數返回錯誤代碼並修改它們的參數。你必須習慣C中的這個編寫代碼。 – 2011-02-03 01:53:24
是的。我眼中的短視。在撰寫評論後,我重新回顧了你的回答。 – 2011-02-03 01:54:25