将2个或多个字符串(中间可能包含'\0')按顺序保存到一段分配的内存中
如题,希望将多个字符串(例如2个),按顺序保存到一段分配的内存中,用memcpy复制了第1个,想将第2个、第3个复制进内存中,本打算用strcat连接,但若中间有‘\0’则终止,我需要的是将完整的串复制进去(包括可能出现的‘\0’)请问如何保存这些字符串呢?
请高手指教!谢谢!
[解决办法]
- C/C++ code
#include <stdio.h>#include <string.h>void main(){ char szbuf[1000]={0}; //定义缓冲区,全部初始化为0,目的是将下面的N个字符串连接起来 ,存在这个缓冲区中 char * str[]={"abcdef","ddd fff","KKK III ","SSSSSSSS","000111333","89754//7","<>sssff0123\n"}; //方法一:使用strcat for(int i=0;i<sizeof(str)/sizeof(str[0]);i++) strcat(szbuf,str[i]); printf(szbuf); //方法二:使用memcpy char * tem=szbuf; for(i=0;i<sizeof(str)/sizeof(str[0]);i++) { memcpy(tem,str[i],strlen(str[i])); tem+=strlen(str[i]); } printf(szbuf); //综合:一定要将目标初始化为0,否则需要自己来进行 '\0'的处理 //另外附上一套C语言教程:http://pan.baidu.com/share/link?shareid=89001&uk=354601140}