//最初级的版本!
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void my_strcpy(char *dest, const char *src)
{
	while (*src != '\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = *src;
}
int main()
{
	char arr[10];
	const char *p = "abcdef";
	my_strcpy(arr, p);
	printf("%s\n", arr);
	system("pause");
	return 0;
}
//  缺点:1.没有判断dest,src指向的位置是否为空
          2.程序冗长,逻辑不简练
          3.dest做程序结束指向最后,没有什么意义!
          4.无返回值,不利于链式访问函数。
         
    
//满分版
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char* my_strcpy(char *dest, const char *src)
{
	assert(dest); //断言,只在debug环境下才能起作用,对程序员调试很有用哦
	assert(src);
	char* ret = NULL;
	ret = dest;
	while (*ret++ = *src++)
	{
		;
	}
	return dest;//设返回值有利于链式访问:例  strlen(strcpy(dest,stc));

}
int main()
{
	char arr[10];
	const char *p = "abcdef";
	char* ret = NULL;
	ret=my_strcpy(arr, p);
	printf("%s\n", ret);
	system("pause");
	return 0;
}