//最初级的版本!
#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;
}
转载于:https://blog.51cto.com/10918952/1726621