strcpy函数的用法是将源字符串复制到目标字符串上。需要注意的是首先在使用时我们要考虑目标字符串是否足够大,也就是说是否有足够的空间来容纳源字符串。如果可以那么就可以复制,否则会产生内存越界,发生未定义行为。
如果要模拟实现strcpy,我们的方法是将源字符串中的每个字符依次复制到目标字符串中。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
char* my_strcpy(char* dest, const char* src) { //我们只是将源字符串复制给目标字符串,不需要对源字符串进行修改,为了避免,我们用 const 进行修饰
assert(dest != NULL && src != NULL);//使用断言来判断地址是否合法
char* tmp = dest;
while (*src) {
*tmp = *src;
src++;
tmp++;
}
//当 while 循环终止时,我们源字符串的 '\0'并未复制到目标字符串中,所以我们需要在复制一次。
*tmp = *src;
return dest;
}
int main() {
char dest[] = "abcd";
char src[] = "efgh";
my_strcpy(dest, src);
printf("%s\n",dest);
return 0;
}