首先分析一下strcpy 和strcat
strcpy()函数
函数参数:
dest:目标数组的首地址
src:源字符串的首地址
函数功能:
将src指针指向的字符串拷贝到dest指针指向的空间;
拷贝时,连同src指针指向的字符串末尾的'\0'一同拷贝;
返回值:
dest指针
注意:
1> dest指针指向的空间要足够大;
2> 拷贝时,连同src指针指向的字符串末尾的'\0'一同拷贝;
strcat()函数
函数参数:
dest:目标数组的首地址
src:源字符串的首地址
函数功能:
将src指针指向的字符串连接到dest指针指向的字符串之后;
返回值:
dest指针
注意:
1> dest指针指向的空间要足够大;
2> 连接前,两串均以'\0'结束;
连接后,dest指针指向的字符串末尾的'\0'被src指针指向的字符串的首字符代替;
连接后,新串末尾加'\0';
/*
function:
实现strcpy、strcat函数;
*/
#include<stdio.h>
#include<string.h>
char *mystrcpy(char *dest,char *src); //声明
char *mystrcat(char *des,char *sr); //声明
int main()
{
char st1[20]="hello";
char st2[20]="eagle";
char st3[10]="666";
mystrcpy(st1,st2);
puts(st1);
mystrcat(st2,st3);
puts(st2);
return 0;
}
char *mystrcpy(char *dest,char*src)
{
int i;
for (i = 0; src[i] != '\0'; i++)//用源字符串将目标字符串覆盖替换
dest[i] = src[i];
for ( ; i < strlen(dest); i++)//在目标串后面加'\0'
dest[i] = '\0';
return dest;
}
char *mystrcat(char *des,char *sr)
{
int dest_len = strlen(des);//求待接目标串长度
int i;
for (i = 0;sr[i]!= '\0' ; i++)
des[dest_len + i] = sr[i];//从目标串的最后一个字符开始粘贴
des[dest_len + i] = '\0';//在目标串后面加'\0'
return des;
}