自己实现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. 个人博客搭建全记录(Hexo,Github)

    搭建过程主要借鉴小歪的博客 博客主题airclod Hexo,Github建站记录 1. 准备 Github账号 注册登陆Github 创建Repository,Repository Name就是Yo ...

  2. 高级UI-自定义动画框架

    有的时候会需要做一些自定义的动画效果,在会反复用到的动画效果可以考虑做成动画框架,方便使用,做成框架的话就需要考虑很多的问题,最典型的问题就是属性和方法必须要是可配置的,这里就来聊一聊自定义动画框架的 ...

  3. 管道式编程(Pipeline Style programming)

    受 F# 中的管道运算符和 C# 中的 LINQ 语法,管道式编程为 C# 提供了更加灵活性的功能性编程.通过使用 扩展函数 可以将多个功能连接起来构建成一个管道. 前言 在 C# 编程中,管道式编程 ...

  4. unix 命令

    ubuntu  命令窗口的打开 打开命令行窗口: Ctrl+Alt+T 在打开的命令行窗口中打开一个新的Tab: Ctrl+Shift+T 在同一窗口的Tab间切换: Ctrl+Page Up 或者 ...

  5. npm安装10

    https://www.cnblogs.com/zouke1220/p/9723191.html

  6. URI和URL的关系与区别

    首先给大家举个例子,有一家公司的总经理,某天,给了我一张名片,上面写了他的头衔,北京XXX公司总经理 张三,还有他的办公室地址,北京市海淀区长安街35号北京XXX公司总经理办公室,那么,我以后给我的朋 ...

  7. 构建工具-Gulp 相关知识

    layout: layout title: 『构建工具-Gulp』相关内容整理 date: 2017-04-26 22:15:46 tags: Gulp categories: Tools --- G ...

  8. C++ 与 MATLAB 混合编程总结(14)

    1. 前言 因为毕业设计的需求,研究了一下,C++如何与MATLAB一起混合编程,中间走了一些弯路,这里总结一下. 我用的主要是C++如何调用MATLAB,而没有涉及MATLAB如何调用C++. 注意 ...

  9. CF197A Plate Game

    题目描述 你有一个长方形的桌子,长度 a ,宽度 b ,以及无限多的半径 r的圆盘. 两位玩家玩以下游戏:他们轮流把圆盘放在桌子上,使得盘子之间不能互相重叠(但他们的边缘可以互相接触),任何盘子上的任 ...

  10. django初识1

    django django初识 django的本质就是基于socket通信 一.127.0.0.1 本地回环地址 后面:8001是端口号 /ppt是根目录下的ppt子网页 二./当前网站的客户端(根目 ...