最近在学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;
}