C/C++ 标准库里提供了一个 字符串操作函数 strcpy(),我们现在尝试自己利用最基本的方法重写这个函数
#include <stdio.h>
#include <assert.h> //断言函数头文件
char * mystrcpy(char * dest,char * sour);
int main(int argc,char *argv[])
{
char * p = "hello world";// 指向常量的指针p,其指向的内容保持只读,不可更改,谨慎使用
char array[20];
memset(array,0,20); //置空,好习惯
mystrcpy(array,p);
printf("%s/n",array);
return 0;
}
char * mystrcpy(char * dest,char * sour)
{
char * address = dest; //必须保存dest地址,用于返回,便于实现链式表达式,提高函数可用性
assert ((dest != NULL) && (sour != NULL)); //断言检查指针是否为空
if ( dest == sour ) //此处是可以省略的,但为了程序严谨,保留
{
return address;
}
while ( '/0' != *sour ) // 条件判断,常量写前面,可以防止写错 eg: sour == '/0' 写成 sour ='/0'
{
*dest++ = *sour++;
}
*dest = '/0'; //结束符
return address;
}