我正在尋找一個示例代碼或者如何改進下面的代碼(這是非常慢的IMO,但它是我可以寫)以最快的方式: 將2D陣列轉換爲char*
並將char
複製到它。將2D數組轉換爲char *數組並將字符串複製到字符串尾部的最快方法
char*
join(int c, size_t arrsize, const char* arr[])
{
char *buf, *tbuf, *val;
size_t i, vsize, total;
buf = malloc(1);
for(i = total = 0; i < arrsize; ++i) {
val = arr[i];
vsize = strlen(val);
if((tbuf = realloc(buf, total + vsize + 2)) == NULL) {
if(buf != NULL)
free(buf);
return NULL;
}
buf = tbuf;
memcpy(buf + total, val, vsize);
total += vsize;
buf[total] = c;
total += 1;
}
buf[total] = '\0';
return buf;
}
調用
const char *foo[] = { "a", "b", "c"};
char *baa = join(' ', 2, foo); //a b c
if(baa) {
printf("%s\n", baa);
free(baa);
} else {
printf("No memory\n");
}
任何幫助,對優化建議非常讚賞。提前致謝。
你的標題指出要追加的char的端P該字符串,但在你的代碼中,你將char放在每個字符串之間。你想要達到什麼目標? – 2012-07-20 20:07:56