自己实现strcpy函数
1.小白写法(我刚开始就是这么写的doge)
#include<stdio.h>
void my_strcpy(char arr1[], char arr2[]) //用数组接收
{
int i = 0;
for(i=0;arr2[i] !=’\0’;i++)
{
arr1[i] = arr2[i];
}
arr1[i + 1] = ‘\0’; //使i的值与数组中所含元素个数一致,包括\0;
}
int main(void)
{
int i = 0;
char arr1[] =“aaaaaaaa”;
char arr2[] = “bbbb”;
my_strcpy(arr1, arr2);
int n = sizeof(arr1) / sizeof(arr1[0]) - 1; //计算数组的个数
for (i; i < n; i++)
{
printf("%c", arr1[i]);
}
return 0;
}
2.入门
#include<stdio.h>
void my_strcpy(char* a1, char* a2) //用地址接受
{
while (a2 != ‘\0’)
{
*a1++ = *a2++; //后置++
}
*a1 = *a2; //因为\0没给过去,这里补上
}
int main(void)
{
char arr1[] = { “uuuuuuuu” };
char arr2[] = { “aaaaa” };
my_strcpy(arr1, arr2);
printf("%s", arr1);
return 0;

本文介绍了如何从初级到高级逐步实现C语言中的strcpy函数,包括基础版本、使用地址接收参数的版本以及考虑空指针安全性的进阶版本。通过实例代码详细展示了每个版本的实现过程,并引入assert函数来防止空指针导致的程序崩溃。
最低0.47元/天 解锁文章
859

被折叠的 条评论
为什么被折叠?



