要求:不使用库函数,利用C语言实现strcpy函数。
Talk is cheap, show me the code,所以直接上代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
char *my_strcpy(const char *source, char *destination);
int main()
{
char source[20] = "abcdef";
int length = strlen(source);
int size = sizeof(source);
char *destination = (char*)malloc(sizeof(char) * (length + 1));
destination = my_strcpy(source, destination);
printf("%s", destination);
//printf("%s", *destination);
}
//注意返回的是指针值
//注意传递的是 const char参数
char *my_strcpy(const char source[], char *destination)
{
int length = strlen(source);
int size = sizeof(source);
//注意:不是判断不符合条件返回NULL,而是做的assert,保证调用系统函数的强制正确性
assert((source != NULL) && (destination != NULL));
char* temp = destination;
while(*source != '\0')
{
*destination++ = *source++;
}
*destination = '\0';
return temp;
}
注意:关注红色标注部分,尤其注意的是为什么要传递 const char 参数,为什么要返回指针值(满足函数使用需求,比如 strlen(my_strcpy...)。