一个10分的实现strcpy函数

我们先来看strcpy的原型:

在这里插入图片描述
接下来我们自己实现my_strcpy函数:

#include<stdio.h>
#include<assert.h>
char* my_strcpy(char *des,const char *src){   
	assert(src != NULL);                 
	assert(des != NULL);
	while (*des++ = *src++){
		;
	}
	return des;
}
int main(){
	char src[] = "abcde";
	char des[] = "";
	printf("src:%s\n", src);
	printf("des:%s\n", des);
	my_strcpy(des, src);
	printf("复制后的des:%s\n", des);
	return 0;
}

这里有以下几个重点即得分点:
1.const关键字:保护源字符串指向的内容不被改变
2.assert();断言函数,如果()中条件为假,就打印一条错误信息,并终止程序执行。
它的原型为:#include <assert.h>
void assert( int expression );
3.最关键的一点就是它的返回值是char*,一般情况下我们只会想到void,那么他设置这样的返回值与void相比好处在于哪里?
就在于:char*可以实现链式访问,将目标地址返回,这样的话strcpy函数就可以作为另一个函数的实参了。
我们应该多思考库函数的原型为什么这样写,这样也就可以自己完美的实现一个库函数了。

猜你喜欢

转载自blog.csdn.net/gaga_yu/article/details/83419736