模拟实现strcpy函数
- strcpy的函数原型为:char *strcpy( char *strDestination, const char *strSource );
- 函数参数为目标地址和源地址
- 返回类型为指针
下面是两种写法,第一种很容易理解,在被拷贝的字符串没到'\0'
时一直赋值,满足条件跳出循环后再将'\0'
也赋值给拷贝的数组。
第二种是将拷贝字符和拷贝'\0'
写在了一起,利用++
的先使用后加1的特性,赋值到'\0'
后while表达式为0为假,跳出循环。
#define _CRT_SECURE_NO_WARNINGS 1
//模拟实现strcpy,字符串拷贝
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
//char *strcpy(char *strDestination, const char *strSource);//原型
char *my_strcpy(char*dest, const char*src)//const使arr不能被改变,防止编程错误
//{
// char* ph = dest;
// while(*src != '\0')
// {
// *dest = *src;
// src++;
// dest++;
// }
// *dest = *src;
// return ph;
//}
char *my_strcpy(char*dest, const char*src)
{
char* ph = dest;
assert(dest);
assert(src);
while (*dest++ = *src++)
{
;
}
return ph;
}
int main()
{
char arr[10] = {0};
char *p = "hello";
my_strcpy(arr, p);
printf("arr=%s\n", arr);
system("pause");
return 0;
}