首页 > 其他分享 >strcpy的模拟实现

strcpy的模拟实现

时间:2024-04-08 19:00:26浏览次数:12  
标签:assert 实现 char ++ strcpy arr2 arr1 拷贝 模拟

        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;
}

标签:assert,实现,char,++,strcpy,arr2,arr1,拷贝,模拟
From: https://blog.csdn.net/weixin_73863912/article/details/137433549

相关文章

  • strcat追加字符串以及其模拟实现
        如此处代码将arr2追加到arr1中的字符串后面。这样就要用两次循环达到字符串的效果,第一次循环是要找到arr1当中'\0'的位置,第二次循环就将src的字符串加入到dest斜杠0后的位置,直到*src==0,结束字符串的追加。#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#i......
  • 递归实现字符串长度的计算
        我们可以模拟实现strlen函数。传入指针arr时,进入函数,我们要判断该指针是不是空函数,防止空指针的出现,用到了断言assert。当一个数组元素没有走到‘\0’时,我们就要利用递归1+my_strlen(arr+1),arr+1是走向下一个数组元素。并且递归的使用一定要有条件的设置,否则会进......
  • Java实现Fast DFS、服务器、OSS上传
    支持FastDFS、服务器、OSS等上传方式介绍在实际的业务中,可以根据客户的需求设置不同的文件上传需求,支持普通服务器上传+分布式上传(FastDFS)+云服务上传OSS(OSS)软件架构为了方便演示使用,本项目使用的是前后端不分离的架构前端:Jquery.uploadFile后端:SpringBoot前期准备:F......
  • EBS Form 实现上传EXCEL
    公共程序包头CREATEORREPLACEPACKAGEECS_WIP_PKGIS--Publictypedeclarations/************************************************************************Owner:EXCEL导入*Parameters:*ReturnValue:*CreationDate:2022-1-1409:02:54*Crea......
  • Vue.nextTick() 使用场景及实现原理
    Vue.nextTick()基本使用作用:等待下一次DOM更新刷新的工具方法。为什么需要用到Vue.nextTick()?当你在Vue中更改响应式状态时,最终的DOM更新并不是同步生效的,而是由Vue将它们缓存在一个队列中,直到下一个“tick”才一起执行。这样是为了确保每个组件无论发生多少......
  • Python实现 时域和频域 数值演变——blog7
    数值演变是指在一定时间段内,数值发生变化或发展的过程。在数值演变过程中,数值可以增加、减少、保持稳定,甚至发生剧烈波动。数值演变可以应用于各个领域,例如经济学、生态学、物理学等。在经济学中,数值演变可以描述经济指标(如GDP、通货膨胀率、失业率等)的变化情况,帮助分析经济发......
  • ThinkPHP 实现简单的缓存锁
    使用ThinkPHP实现简单的缓存锁在开发过程中,为了避免重复提交等问题,我们常常需要使用缓存锁来控制并发访问。本文将介绍如何利用ThinkPHP框架实现一个简单的缓存锁功能。锁Key的生成在实现缓存锁之前,首先需要确定锁的唯一标识,这里我们采用了学生ID和费用数据ID......
  • ubuntu下实现一个端口到另一个IP和端口的映射
    要在Ubuntu上实现一个端口到另一个IP地址和端口的映射,通常有几种方法。这里,我们将讨论两种常用的方法:使用iptables和使用SSH端口转发。方法1:使用iptablesiptables是Linux上用于配置防火墙的工具。它允许你根据指定的规则对进出网络数据包进行控制。首先,确保你已经......
  • flask+mysql实现基础增删改查
    原文:https://blog.csdn.net/qq_29720657/article/details/124522898?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171255890916800226584900%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171255890916800226584900&biz_......
  • Memcache分布式布置方案--一致性Hash分布机制PHP实现
    一致性Hash分布简介在服务器数量不发生改变时,普通的Hash分布可以很好地运作。当服务器的数量发生改变时,问题就出来了,试想,增加一台服务器时,同一个key经过Hash之后,与服务器取模的结果跟没增加服务器之前的结果会不一样,这就导致之前保存的数据丢失。为了把丢失的数据减少到最少,可以采......