C++中用memcpy()函数复制字符串的正确方法

//对字符最容易忽视的是字符串结尾会默认添加一个不可见的‘0\’
//因此用memcpy()函数对字符串复制时容器一定要多申请一个字节。
//如:char* p1="copy";要想把其copy到另一个空间中必须申请5Byte的空间:
//做法:char *p2=(char*)melloc(5);memcpy(p2,p1,4);;p2[5]='0\';至此完成复制;
#include "stdafx.h"
#include "string.h"
#include "malloc.h"
 
 int Findsub(char *all,char *sub)
{
   int count=0;
   int len1=strlen(sub);
 
   char *buffer=(char *)malloc(len1+1);//中间量内存的申请
 
   while(*(all+len1-1)!='\0')
   {
     memcpy(buffer,all,len1);//截取,存入buffer
 buffer[len1]='\0';    
 if(strcmp(buffer,sub)==0)
 {
   count++;
   all+=len1;
   //all++;
 }
 else
 {
      all++;
 }
   }
 
   free(buffer);
   return count; 

}

int _tmain(int argc, _TCHAR* argv[])
{
 
char *a="aaaabaaaaaabaa";
char *b="aba";
    int len=Findsub(a,b);
    printf("------------%d\n",len);

return 0;
}

永不止步步 发表于11-28 09:11 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308567个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号