不调用C库函数string.h实现字符串的连接

最近在学VC++,留下笔记,好以后如果有用,可以不用重新写,如果他人觉得有用,可以转载,但请注明出处,谢谢!

 

 

//--------------------------------------------------------------------

//功能:求字符串的长度,不包括'/0'

//返回:ch_string所指字符串的长度

//作者:heshanxingzhe-080610

//此函数旨在返回ch_string的长度

unsigned int str_length(const char *ch_string)

{   unsigned int str_len=0;

    int i=0;

    char c=ch_string[0];

 

    while(c!='/0')

    {  str_len++;

       c=ch_string[++i];

    }

 

    return str_len;

 

}

 

 

 

 

//----------------------------------------------------------------------

//功能:将src所指的字符串接到dest所指的字符串后

//返回:dest所指字符串

//作者:heshanxingzhe-080610

//注意:1.dest所指的字符数组如果容纳不了连接后的src所指的字符串,则出现

//        问题,因为长度不过

//      2.连接后的两个字符串的后面都有一个'/0',连接后将字符串后面的'/0'

//        取消,只在新串最后保留一个'/0'

//一开始,写的程序是没有被注释掉的那一部分,但在调试中如果dest所指的字符

//串数组长度容纳不料要连接的字符串,则出现错误。于是就想通过重新分配一个

//新空间大小的字符串空间来返回结果,但调试没有通过,只好作罢。

char *str_cpy(char *dest, const char *src)

{  unsigned int len_dest,len_src;

   unsigned int i,j;

   //char *ptr_dest;                //新的动态存储区,存储新的字符串

 

   len_dest=str_length(dest);

   len_src=str_length(src);

 

   //需要len_dest+len_src+1是为了存储最后一个'/0'

   //ptr_dest=(char *)malloc(len_dest+len_src+1);   //开辟一个新单元,有len_dest+len_src+1

 

   //先拷贝dest所指字符串

   //for(i=0;i<len_dest;i++)

   //{  ptr_dest[i]=dest[i++];

   //}

 

   //先拷贝src所指字符串

   for(j=0,i=len_dest;i<(len_dest+len_src)&&j<len_src;i++)

   {  //ptr_dest[i]=src[j++];

      dest[i]=src[j++];

   }

  

   //ptr_dest[len_dest+len_src]='/0';

 

   //dest=ptr_dest;   //dest指向新的字符串

   return dest;

}

你可能感兴趣的:(c,String,存储)