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 ...
随机推荐
- 【网络开发】winsock组播
https://my.oschina.net/lopo/blog/260685 //客户端 #include <winsock2.h> #include <stdio.h> # ...
- PMP备考笔记--1.1
题型 200道中英文单选题 基本概念题(%10) 过程工具/技术和输入输出题ITTO (%10) 情景题(%70) 计算题(3-5道题) 图 pmp四大挑战 试卷100页,题干长,阅读量大,考试4个小 ...
- flask 编码问题
在我们的flask项目中,通过表单提交对数据库进行更新的时候,数据提交不成功,提示以下内容: sqlalchemy.exc.InternalError: (pymysql.err.InternalEr ...
- lua . 命令收集
io.popen()## 原型:io.popen ([prog [, mode]]) 解释:在额外的进程中启动程序prog,并返回用于prog的文件句柄.通俗的来说就是使用这个函数可以调用一个命令(程 ...
- Python学习路线图【转载】
文章来源:https://blog.csdn.net/u014044812/article/details/88079011
- xorm表结构操作实例
获取数据库信息 package main import ( "fmt" _ "github.com/go-sql-driver/mysql" "git ...
- SAS学习笔记55 RTF输出标题级别的设置
很多人都喜欢将表格的标题通过report中的compute before _page_ 添加到table的前面,但是这种方式并不能直接定义标题的级别,需要后期进行表格的加工. 在使用proc repo ...
- Map、Set的基本概括
Map: 在运用map和set 集合之前首先要弄清楚它们的基本定义是什么. 简介:map是一种关联式容器,但是她储存方式是以键值对(key/value)存在的. Map用法: 定义Map集合并往集合中 ...
- BUG:WSL 的 ssh server 无法启动
BUG 使用 sudo service ssh start 启动 ssh 服务,提示: * Restarting OpenBSD Secure Shell server sshd Could not ...
- Arm-Linux 移植 FFMPEG库 + x264
背景: ffmpeg 中带有264的解码,没有编码,需要添加x264.libx264是一个自由的H.264编码库,是x264项目的一部分,使用广泛,ffmpeg的H.264实现就是用的libx26 ...