strcpy函数用法举例,strcpy怎么实现
在C语言库中,函数strcpy可以复制字符串,当然我们也可以通过代码来实现。今天给大家介绍一下实现strcpy函数代码的优化过程。
代码1:
#包含stdio.h
void my_strcpy(char* dest,char* src)
{
while(*src!=\0)
{
* dest=* src
dest
src
}
* dest=* src
}
int main()
{
char arr 1[]= # # # # # # # ;
char arr 2[]= bit ;
my_strcpy(arr1,arr 2);
printf(%s\n ,arr 1);
返回0;
}在这段代码中,我们可以简单的实现字符串复制功能。在定义my_strcpy函数时,代码有缺点:执行效率低,总内存空间大。
1:优化:
#包含stdio.h
void my_strcpy(char* dest,char* src)
{
while (*dest=*src)
{
;
}
}
int main()
{
char arr 1[]= # # # # # # # ;
char arr 2[]= bit ;
my_strcpy(arr1,arr 2);
printf(%s\n ,arr 1);
返回0;
}经过这样的优化,我们可以通过*dest=*src的循环设置来复制字符串,并且在最后一次循环中,代码可以巧妙的实现赋值 \ 0 ,停止循环。
2.优化:
#包含stdio.h
#include assert.h
void my_strcpy(char* dest,char* src)
{
断言(dest!=NULL);
断言(src!=NULL);
while (*dest=*src)
{
;
}
}
int main()
{
char arr 1[]= # # # # # # # ;
char arr 2[]= bit ;
my_strcpy(arr1,arr 2);
printf(%s\n ,arr 1);
返回0;
}经过这样的优化,在代码中加入assert,可以使代码具有报错和停止操作的功能。如果我们在传入一个参数时传入一个NULL(空指针),代码将会出错停止。
优化3:
#包含stdio.h
#include assert.h
void my_strcpy(char* dest,const char* src)
{
断言(dest!=NULL);
断言(src!=NULL);
while (*dest=*src)
{
;
}
}
int main()
{
char arr 1[]= # # # # # # # ;
char arr 2[]= bit ;
my_strcpy(arr1,arr 2);
printf(%s\n ,arr 1);
返回0;经过这次优化后,我们在char* src前添加const修饰,这样可以防止char* src值被更改。如果我们在输入代码时,在dest和src的位置上犯了一个错误,代码将会错误地运行。
优化4:
#包含stdio.h
#include assert.h
char* my_strcpy(char* dest,const char* src)
{
char * ret=dest
断言(dest!=NULL);
断言(src!=NULL);
while (*dest=*src)
{
;
}
返回ret
}
int main()
{
char arr 1[]= # # # # # # # ;
char arr 2[]= bit ;
printf(%s\n ,my_strcpy(arr1,arr 2));
返回0;
}通过查阅strcpy函数的相关资料,可以找到strcpy的定义和返回值。这种优化将使我们的代码更加健壮。
浅显地看一下运行结果ba:
转载请联系作者授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。