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 ...
随机推荐
- mysql存储过程demo
#删除存储过程 -- drop procedure if exists add_test; CREATE PROCEDURE add_test() begin #定义变量 declare client ...
- Mac下WordPress4.1安装使用笔记
WordPress简介 WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内 ...
- python 爬虫实例(一)
一个简单的爬虫工程 环境: OS:Window10 python:3.7 安装一些库文件 pip install requests pip install beautifulsoup4 pip ins ...
- Can't find bundle for base name javax.servlet.LocalStrings, locale zh_CN
启动junit4测试报错,原因是没有servlet-api.jar eclipse右键项目>>>>>>Build Path>>>>>C ...
- JIRA问题状态已关闭,但是解决结果还是未解决
自己设置的工作流,状态和解决结果是没有关联的,这时候我们要配置关联关系 1.如下,状态时已关闭,但是解决结果是未解决 . 2.解决方法: 2.1设置-问题-工作流,找到目前在使用的工作流,点击编辑 3 ...
- CMS之promotion failed&concurrent mode failure
原文链接:https://www.jianshu.com/p/ca1b0d4107c5 CMS并行GC收集器是大多数JAVA服务应用的最佳选择,然而, CMS并不是完美的,在使用CMS的过程中会产生2 ...
- 学习笔记:oracle学习三:SQL语言基础之sql语言简介、用户模式
目录 1.sql语言简介 1.1 sql语言特点 1.2 sql语言分类 1.3 sql语言的编写规则 2.用户模式 2.1 模式与模式对象 2.2 实例模式scott 本系列是作为学习笔记,用于记录 ...
- linux中硬盘分区、格式化、挂载
已经接触了小半年的linux,基本命令用的还行,就是涉及到深入操作,就显得不够看了,比如linux中的硬盘操作,于是整理了这篇博客. 1. 主分区,扩展分区,逻辑分区的联系和区别 一个硬盘可以有1 ...
- linux中matlab的中文乱码问题
ref:http://hi.baidu.com/36470902/item/47f3b133c419d989f5e4ade1 将系统的jre拷贝到matlab去 . sudo mv $MATLAB/s ...
- mogodb数据库简单的权限分配
mongdb数据库默认不需要权限认证,但为了安全起见,最好设置下需要权限认证,启动的时候设置auth=true即可. 推荐通过mongodb.conf配置文件的形式启动mongodb 进入mong ...