读书人

将二个或多个字符串(中间可能包含#039;\0

发布时间: 2012-11-04 10:42:42 作者: rapoo

将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} 

读书人网 >C语言

热点推荐