自己实现strcpy函数

#include <stdio.h>
#include <assert.h> //如果它的条件返回错误,则终止程序执行 char *m_strcpy(char* str1, char* str2)
{
assert(str1 != NULL);
assert(str2 != NULL); if (str1 == NULL||str2 == NULL)
{
return NULL;
} char *ret = str2;
while((*str2++ = *str1++) != '\0');
return ret;
} int main(void)
{
char str1[] = "hello world123123!";//fgets(word, num, stdin);
char str2[sizeof(str1)] = {' '}; m_strcpy(str1, str2);
printf("str2: %s %d\n", str2, sizeof(str2)); return 0;
}

代码2:

char *m_strcpy(char dest[],char src[])
{
int i = 0;
while(src[i] != '\0')
{
dest[i] = src[i];
i++;
}
dest[i] = '\0'; return dest;
}

关于这个代码的问题:

#include <stdio.h>
#include <assert.h> //如果它的条件返回错误,则终止程序执行 char *m_strcpy(char* str1, char* str2)
{
assert(str1 != NULL);
assert(str2 != NULL); if (str1 == NULL||str2 == NULL)
{
return NULL;
} char *ret = str2;
while((*str2++ = *str1++) != '\0');
return ret;
} int main(void)
{
char str1[] = "hello world123123!";//fgets(word, num, stdin);
char str2[] = {' '}; m_strcpy(str1, str2);
printf("str2: %s %d\n", str2, sizeof(str2)); return 0;
}

为啥str2的大小为1,还是输出了复制后的结果。


m_strcpy的更多相关文章

  1. C语言实现strcat / strlen / strcmp / strcpy

    主要考虑两点: 返回值对使用的便利性. 边界,null的判断. strcat char *m_strcat(char *des, const char *src) { assert((des != N ...

随机推荐

  1. element组件 MessageBox不能显示确认和取消按钮,记录正确使用方法!

    这里是局部引入 调用方式:

  2. 双链表的基本实现与讲解(C++描述)

    双链表 双链表的意义 单链表相对于顺序表,确实在某些场景下解决了一些重要的问题,例如在需要插入或者删除大量元素的时候,它并不需要像顺序表一样移动很多元素,只需要修改指针的指向就可以了,其时间复杂度为 ...

  3. Guava 工具类之Cache的使用

    一.guava cache 介绍 1.介绍 guava cache是Google guava中提供的一款轻量级的本地缓存组件,其特点是简单.轻便.完善.扩展性强,内存管理机制也相对完善. 2.使用缓存 ...

  4. [转帖]微软击败亚马逊 赢得五角大楼的100亿美元JEDI云合同

    微软击败亚马逊 赢得五角大楼的100亿美元JEDI云合同 https://www.cnbeta.com/articles/tech/903507.htm 微软Azure的胜利 国防部证实,美国政府已向 ...

  5. MATLAB 求一个点周围 voronoi 边的顶点的坐标

    本代码在[MATLAB 2015b] 下编写运行成功,不保证所有版本适用. x=[0 -.5 1 1 -1]; y=[0 -1 -.5 1 1]; voronoi(x,y);axis([-2 2 -2 ...

  6. fpga基础

    1.FPGA 的分类: 根据 FPGA 基本结构,可将其分为基于乘积项(Product-Term)技术的 FPGA 和基于查找表(Look-Up-Table)技术的 FPGA 两种. (1)基于乘积项 ...

  7. centos7安装php7.3的redis扩展(不是redis服务!)

    PHP其他扩展加装扩展也是一样的步骤~ PHP官网下载redis扩展: http://pecl.php.net/package/redis 稳定版吧: [root@wf ~]# wget http:/ ...

  8. 【SCALA】3、模拟电路

    Simulation package demo17 abstract class Simulation { type Action = () => Unit case class WorkIte ...

  9. ALV报表——表头实现

    ABAP实现ALV表头的DEMO: 运行效果: 代码: *********************************************************************** ...

  10. PowerBuilder学习笔记之导入Excel数据

    原文地址:http://blog.chinaunix.net/uid-20586802-id-3235549.html /*****************简单的导入功能,涉及到数据类型判断***** ...