自己实现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. 【GStreamer开发】GStreamer基础教程04——时间管理

    目标 本教程主要讲述一些和时间相关的内容.主要包括: 1. 如何问pipeline查询到流的总时间和当前播放的时间 2. 如何在流内部实现跳转功能 介绍 GstQuery是向一个element或者pa ...

  2. PHP比较两个版本的方法

    PHP比较两个版本的方法 写app接口经常要用到 PHP接口的版本和app里面的版本做比较 如果app版本低于接口版本 那么就要提示他升级 <pre><?php/** * 版本处理类 ...

  3. linux软件安装习惯

    Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的 /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32./u ...

  4. 线性表——顺序表的实现与讲解(C++描述)

    线性表 引言 新生安排体检,为了 便管理与统一数据,学校特地规定了排队的方式,即按照学号排队,谁在前谁在后,这都是规定好的,所以谁在谁不在,都是非常方便统计的,同学们就像被一条线(学号)联系起来了,这 ...

  5. git实现码云的上传和下载

    上传步骤: 1.码云上新建一个项目 XXXX? ?(项目名) 2.本地创建一个文件夹E:/XXXX,然后使用git bash? ?? 3.cd 到本地文件夹中E:/XXXX? //如果是在创建的文件中 ...

  6. SpringBoot项目集成PageHelper使用

    SpringBoot项目集成PageHelper使用 一.开始 ​ 地址:https://github.com/pagehelper/Mybatis-PageHelper ​ 在spring boot ...

  7. PHP中的PDO数据对象

    PDO: PHP Data Object:php的数据对象.pdo是数据库操作工具类!1,它能操作很多种数据库,比如mysql,oracle,sybase....2,它具有操作数据库的更多的功能,比如 ...

  8. Python中创建数值列表——参考Python编程从入门到实践

    1. 函数range( )的使用 range( )函数可以生成一系列的数字: for value in range(1, 5): print(value) Note:运行结果是打印数字1到4,即该函数 ...

  9. FPS 游戏实现D3D透视

    FPS游戏可以说一直都比较热门,典型的代表有反恐精英,穿越火线,绝地求生等,基本上只要是FPS游戏都会有透视挂的存在,而透视挂还分为很多种类型,常见的有D3D透视,方框透视,还有一些比较高端的显卡透视 ...

  10. 题解-CTS2019氪金手游

    Problem \(\mathtt {loj-3124}\) 题意概要:给定 \(n\) 个点,\(w_i\) 分别有 \(p_{i,1},p_{i,2},p_{i,3}\) 的概率取 \(1,2,3 ...