strcpy的实现和模拟

  • 调用形式
strcpy(字符串1,字符串2);
  • 功能
将字符串2复制到字符串1的存储单元中
  • 代码演示
#include<stdio.h>
int main()
{
    char s1[10] = "hello";
    char s2[10] = "world";
    strcpy(s1, s2);
    printf("%s",strcpy(str2,str1));
    return 0;
}

这里写图片描述

  • 模拟实现strcpy函数
#include<stdio.h>
#include<assert.h>
char*my_strcpy(char*dest, char*src)
{
    char *tmp = dest;
    while (*src != '\0')
    {
        *dest = *src;
        dest++;
        src++;
    }
    *dest = '\0';
    return tmp;
}
int main()
{
    char s1[10] = "hello";
    char s2[10] = "world";
    printf("%s\n", my_strcpy(s1, s2));
    return 0;
}
  • 优化
#include<stdio.h>
#include<assert.h>
char*my_strcpy(char*dest, const char*src)
{
    char *tmp = dest;
    assert(dest != NULL);//断言,如果为空指针,编译器会报错
    assert(src != NULL);
    while (*dest++ = *src++)
    {
        ;
    }
    return tmp;
}
int main()
{
    char s1[10] = "hello";
    char s2[10] = "world";
    printf("%s\n", my_strcpy(s1, s2));
    return 0;
}
  • 为什么返回char* ?
    为了实现链式访问(把一个函数的返回值作为一个函数的参数)
  • 为什么用const修饰?
    防止反向(目标文件到源文件)拷贝发生错误,即使发生错误,编译器也会在编译的时候报错,提高了代码的健壮性。

  • 对const的补充
    这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40995778/article/details/80046317
今日推荐