-5
我有一個字符串數組,我想創建一個新的字符串,它是所有數組元素的串聯。任何幫助表示讚賞,感謝如何將我的數組的字符串元素連接到C中的單個字符串?
我有一個字符串數組,我想創建一個新的字符串,它是所有數組元素的串聯。任何幫助表示讚賞,感謝如何將我的數組的字符串元素連接到C中的單個字符串?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *concatenate(size_t size, char *array[size], const char *joint){
size_t jlen, lens[size];
size_t i, total_size = (size-1) * (jlen=strlen(joint)) + 1;
char *result, *p;
for(i=0;i<size;++i){
total_size += (lens[i]=strlen(array[i]));
}
p = result = malloc(total_size);
for(i=0;i<size;++i){
memcpy(p, array[i], lens[i]);
p += lens[i];
if(i<size-1){
memcpy(p, joint, jlen);
p += jlen;
}
}
*p = '\0';
return result;
}
int main(){
char *ss[] = { "first", "second", "last" };
char *cat = concatenate(3, ss, "");
puts(cat);
free(cat);
cat = concatenate(3, ss, ", ");
puts(cat);
free(cat);
return 0;
}
首先確保目標的大小,如果至少超過一人,所有
一起數組中的字符串的大小,否則你會寫出來的字符串
某些隨機存儲器地址不會被您訪問,並且您最終可能會遇到分段錯誤
。
它更好地使用「strncat」而不是「strcat」,前者將使您只複製預期的字節數量的
。 不要忘記在成功複製所有字符串後追加空終止符。
一個循環和['strcat'](http://en.cppreference.com/w/c/string/byte/strcat)函數? – 2014-09-10 14:21:31