#include<stdio.h>
#include<assert.h>
void my_strcpy1(char* dest,char* src)//若满分是10分,现在是6分
{//把src指向的字符串拷贝到dest指向的空间,包含‘\0’
while(*src!='\0')
{
*dest=*src;
dest++;
src++;
}
*dest=*src;//将‘\0’传过去
}
void my_strcpy2(char* dest,char* src)//优化 //若满分是10分,现在是6.5分
{
while(*src!='\0')
{
*dest++=*src++;//后置++,先用后变
}
*dest=*src;//将“\0”传过去
}
void my_strcpy3(char* dest,char* src)//优化 //若满分是10分,现在是7分
{
while(*dest++=*src++)
{
;
}
}
void my_strcpy4(char* dest,char* src)//优化 //若满分是10分,现在是7.5分
{
if(dest!=NULL&&src!=NULL) //防止在调用该函数时,输入的指针错误
{
while(*dest++=*src++)
{
;
}
}
}
void my_strcpy5(char* dest,char* src)//优化 //若满分是10分,现在是8分
{
assert(dest!=NULL);//断言
assert(src!=NULL);//断言
//assret()的头文件是 #include<assert.h>
while(*dest++=*src++)
{
;
}
}
void my_strcpy6(char* dest,const char* src)//优化 //若满分是10分,现在是9分
{ //const确保src传给dest
assert(dest!=NULL);//断言
assert(src!=NULL);//断言
while(*dest++=*src++)//若 dest与src写反,会因为const报错
{
;
}
}
char* my_strcpy7(char* dest,const char* src)//优化 //若满分是10分,现在是10分
{ //const确保src传给dest
char* ret=dest;
assert(dest!=NULL);//断言
assert(src!=NULL);//断言
while(*dest++=*src++)//若 dest与src写反,会因为const报错
{
;
}
return ret;
}
int main()
{
char arr1[]="*********************";
char arr2[]="sheng";
my_strcpy1(arr1,arr2);
printf("%s\n",arr1);
my_strcpy2(arr1,arr2);
printf("%s\n",arr1);
my_strcpy3(arr1,arr2);
printf("%s\n",arr1);
my_strcpy4(arr1,arr2);
printf("%s\n",arr1);
my_strcpy5(arr1,arr2);
printf("%s\n",arr1);
my_strcpy6(arr1,arr2);
printf("%s\n",arr1);
my_strcpy7(arr1,arr2);
printf("%s\n",arr1);
printf("%s\n",my_strcpy7(arr1,arr2));
return 0;
}
自己制作strcpy()函数
于 2023-01-04 17:38:44 首次发布