m_strcpy
自己实现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的更多相关文章
- C语言实现strcat / strlen / strcmp / strcpy
主要考虑两点: 返回值对使用的便利性. 边界,null的判断. strcat char *m_strcat(char *des, const char *src) { assert((des != N ...
随机推荐
- 你应该知道的4个DSP开发支持库
引言 在dsp开发中,为了节省开发时间和难度,TI将一些成熟的算法封装为模块,供开发者使用.如果能充分利用这些算法支持库,对于加快dsp开发进程与提高代码质量.稳定性有非常大的帮助. Digital ...
- 转录组组装软件stringtie
StringTie是約翰·霍普金斯大學计算机生物中心开发的一款转录组组装软件,在组装转录本的完整度,精度和速度方面都较以往的cufflinks 有很大的提升,也是目前有参考基因组转录组主流的组装软件. ...
- MySQL面试 - 读写分离
MySQL面试 - 读写分离 面试题 你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题? 面试官心理分析 ...
- PHP如何访问数据库集群
一般常见的有三种做法, 1,自动判断sql是否为读,来选择数据库的连接: 实例化php DB类的时候,需要一次连接两台服务器,然后根据slq选择不同的连接,举个例子: $link_w = mysql_ ...
- gensim中word2vec
from gensim.models import Word2Vec Word2Vec(self, sentences=None, size=100, alpha=0.025, window=5, m ...
- 用php做管理后台
最近因处理家庭之事,技术上没有提高,这段时间也陆续的恢复了正常的开发,由于要做一个管理后台,所以在选择语言和架构上搜了不少资料, php 和java 的选择上,后来选择用php作为管理后台开发的语言. ...
- 创建线程的三种方式(Thread、Runnable、Callable)
方式一:继承Thread类实现多线程: 1. 在Java中负责实现线程功能的类是java.lang.Thread 类. 2. 可以通过创建 Thread的实例来创建新的线程. 3. 每个线程都是通过某 ...
- WUSTOJ 1323: Repeat Number(Java)规律统计
题目链接:1323: Repeat Number Description Definition: a+b = c, if all the digits of c are same ( c is mor ...
- Python中turtle库的使用
Turtle图形库 Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种: 画笔控制函数 penup():抬起画笔: pendow ...
- WSL 服务自动启动
WSL 服务自动启动 参考 https://zhuanlan.zhihu.com/p/47733615 Windows 启用 WSL 功能支持 > Enable-WindowsOptionalF ...