用C语言实现strcpy函数和strncpy函数
内容会持续更新,有错误的地方欢迎指正,谢谢!
strcpy函数
strcpy是C语言中的一个复制字符串的库函数,手动实现如下:
char* strcpy(char* des,const char* sourse)
{if(des==NULL||sourse==NULL)return NULL;char* res=des;while((*des++=*sourse++)!='\0');return res;
}
也许你们会有疑惑:*p++
,p为一个指针。
是这样的,*和++是同一优先级的运算符,所以按照右结合性来看,先执行p++,在执行*,但是请见p++的原理,p++会返回的是一个临时值,也属于右值,也就是p自增之前的值。根据下方例子能更好地理解:
#include <iostream>
using namespace std;
int main()
{int array[]={1,2,3,4};int *p=array;int res1=*p++;//【1】int res2=*++p;//【2】cout<<res1<<" "<<res2<<endl;return 0;
}
输出结果为:1 3
因为:
【1】是先执行p++,再*,所以就是先返回p去执行*,此时的p指向1,再p+1;
【2】是先执行++p,再*,所以就是先p+1,再*,但由于【1】已经让p加过一次1了,所以,此时的p指向3。
strncpy函数
strncpy的功能和strcpy相似,只是它复制时多了一个终止条件。即是未遇到原串的’\0’,如果已经复制了n个字符(n为提供的参数长度),复制同样会终止。
char* strncpy(char* dest,char* source,int n)
{if(dest==NULL||source==NULL)return NULL;char* res=dest;int i=0;while(i++<n&&(*dest++=*source++)!='\0');if(*(--dest)!='\0')*dest='\0';return res;
}
用C语言实现strcpy函数和strncpy函数相关推荐
- strncat 函数、strncmp 函数、strncpy 函数的使用与模拟
1. strncat 函数. strncat 函数的介绍: strncat 函数char *strncat( char *strDest, const char *strSource, size_t ...
- java strcpy,详解C语言中strcpy()函数与strncpy()函数的使用
C语言strcpy()函数:复制字符串 头文件:#include 定义函数: char *strcpy(char *dest, const char *src); 函数说明:strcpy()会将参数s ...
- 这是我转贴的strcpy函数与strncpy函数的比较,其中有些错误,建议大家还是看msdn,要好的多
strcpy与strncpy函数 (1) Memset 原型:extern void *memset(void *buffer, int c, int count); 用法:#include 功能:把 ...
- strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数
strcpy函数: char *strcpy(char *Dest , const char *Src) { assert((Dest != NULL) && (Src != NULL ...
- 随想录(用memmove函数代替strncpy函数)
[声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 有过C语言编程的朋友应该都有过指针越界的困扰.不管越界的地方是全局地址.还是局部地址,查起来都是 ...
- Strcpy函数和Strncpy函数
strcpy函数详解 strcpy函数原型 char *strcpy( char *strDestination, const char *strSource); 库函数下的strcpy #inclu ...
- C语言的库函数、自定义函数、嵌套函数,以及递归函数
函数是C语言和C++很重要的部分,从它们本身有的系统的库函数,到我们自定义类型的函数.我们需要了解进一步地了解它们,掌握它们,使用它们. 目录 库函数 常见的库函数 自定义函数 1.自定义取最大值得函 ...
- 十一.字符串函数与内存函数
目录 一.求字符串长度 二.长度不受限制的字符串函数 1.strcpy函数 2.strcat函数 3.strcmp函数 三.长度受限制的字符串函数 1.strncpy函数 2.strncat函数 3. ...
- C语言strcpy、strncpy函数是否会复制‘\0‘结束符
1.首先看看strcpy函数的原型 /* strcpy函数原型*/ char *strcpy(char *est,const char *src) {assert((dest!=NULL)&& ...
最新文章
- html5页面中鼠标悬停效果,CSS实例:非常不错的鼠标悬停TIP效果!_div+css布局教程...
- ajax与axios使用哪个好,ajax、axios、fetch之间的详细区别以及优缺点
- vi测试仪维修成功率高吗?_电工电路板检测维修无图电路板的技巧
- conda 分享自己的实验环境
- python读取第二行_使用Python操作Excel(二):读取数据表
- RTMP协议发送H.264编码及AAC编码的音视频,实现摄像头直播
- 商业模式新生代_业务分析基础 - 商业模式新生代01篇
- html-文本框和单选框
- mapinfo图层导入奥维_(通信技能分享)怎样把谷歌地球上画的路线图导入到测试软件中!...
- CentOS_7 安装MySql5.7
- 没有bug队——加贝——Python 41,42
- xutils找id报空指针异常
- 基于JAVA+Spring+MYSQL的码头船只出行管理系统
- 缓存 ASP.NET 页
- 学会这20条,做个聪明的人
- 分享一个游戏源码、游戏服务端、下载网站
- 华为92家核心供应商名单公布
- linux e1000e 网卡驱动,Ubuntu安装Intel e1000e千兆网卡
- 一键刷入twrp_努比亚Z17-Z17S-Z17mini 刷入MIUI10系统刷机教程
- 基于Java的俄罗斯方块游戏的设计与实现(含源文件)