如果你想在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