strcmp(arr1,arr2)是将arr2的内容拷贝到arr1当中。接下来我们来看看如何模拟实现:我们首先得创建一个函数,传入arr1与arr2当前的内容。assert保证函数的健壮性,以防传入的数组为空指针。再通过指针*arr2++=*arr1++,一个字节一个字节的传入,直到*arr2=0时结束循环,最终实现了strcpy的模拟实现。
#include<stdio.h>
#include<assert.h>
void my_strcmp(char* arr1, char* arr2)
{
assert(arr1 != NULL);
assert(arr2 != NULL);
//拷贝\0前面的内容
while (*arr2 != 0)
{
*arr1++ = *arr2++;
}
//拷贝斜杠0
*arr1 = *arr2;
//还有一个更为精妙的方法,关于拷贝时:
//while (*arr1++ = *arr2++) {
// ;
//}
当arr1=0时自动结束循环,又同时完成了拷贝。
}
}
int main()
{
char arr1[] = "元神启动!";
char arr2[] = "元神关闭!";
printf("%s\n", arr1);
my_strcmp(arr1, arr2);//是将arr2复制到arr1中
printf("%s\n", arr1);
return 0;
}