自己实现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. 你应该知道的4个DSP开发支持库

    引言 在dsp开发中,为了节省开发时间和难度,TI将一些成熟的算法封装为模块,供开发者使用.如果能充分利用这些算法支持库,对于加快dsp开发进程与提高代码质量.稳定性有非常大的帮助. Digital ...

  2. 转录组组装软件stringtie

    StringTie是約翰·霍普金斯大學计算机生物中心开发的一款转录组组装软件,在组装转录本的完整度,精度和速度方面都较以往的cufflinks 有很大的提升,也是目前有参考基因组转录组主流的组装软件. ...

  3. MySQL面试 - 读写分离

    MySQL面试 - 读写分离 面试题 你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题? 面试官心理分析 ...

  4. PHP如何访问数据库集群

    一般常见的有三种做法, 1,自动判断sql是否为读,来选择数据库的连接: 实例化php DB类的时候,需要一次连接两台服务器,然后根据slq选择不同的连接,举个例子: $link_w = mysql_ ...

  5. gensim中word2vec

    from gensim.models import Word2Vec Word2Vec(self, sentences=None, size=100, alpha=0.025, window=5, m ...

  6. 用php做管理后台

    最近因处理家庭之事,技术上没有提高,这段时间也陆续的恢复了正常的开发,由于要做一个管理后台,所以在选择语言和架构上搜了不少资料, php 和java 的选择上,后来选择用php作为管理后台开发的语言. ...

  7. 创建线程的三种方式(Thread、Runnable、Callable)

    方式一:继承Thread类实现多线程: 1. 在Java中负责实现线程功能的类是java.lang.Thread 类. 2. 可以通过创建 Thread的实例来创建新的线程. 3. 每个线程都是通过某 ...

  8. WUSTOJ 1323: Repeat Number(Java)规律统计

    题目链接:1323: Repeat Number Description Definition: a+b = c, if all the digits of c are same ( c is mor ...

  9. Python中turtle库的使用

    Turtle图形库 Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种: 画笔控制函数 penup():抬起画笔: pendow ...

  10. WSL 服务自动启动

    WSL 服务自动启动 参考 https://zhuanlan.zhihu.com/p/47733615 Windows 启用 WSL 功能支持 > Enable-WindowsOptionalF ...