使用指针完成模拟实现strcpy函数
本篇使用了两种方法
第一种
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void my_strcpy(char *dest,const char *src)
{
assert(dest);//断言,目的是判断此指针是否是空指针,空指针不能解引用
assert(src);//断言,目的是判断此指针是否是空指针,空指针不能解引用
while (*src != '\0')
{
*dest = *src;
src++;
dest++;
}
*dest = *src;//把'\0'赋给目标字符串
}
int main()
{
char arr[20];
my_strcpy(arr, "hello hahaha");
printf("%s\n", arr);
system("pause");
return 0;
}
第二种
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void my_strcpy(char *dest, const char *src)
{
assert(dest);//断言,目的是判断此指针是否是空指针,空指针不能解引用
assert(src);//断言,目的是判断此指针是否是空指针,空指针不能解引用
while (*dest++ = *src++)//先把源字符串的首元素赋给目标字符串,然后各自++;加到'\0'时,循环退出
{
;
}
*dest = '\0';
}
int main()
{
char arr[20];
my_strcpy(arr, "hello hahaha");
printf("%s\n", arr);
system("pause");
return 0;
}
模拟strcpy函数时应注意的地方:
1.参数的保护;
2.返回值的设置;(应返回目标空间的起始地址)
3.指针参数的断言;
4.’\0’ 的拷贝问题。