资源描述:
《用C语言实现strcpy,strncpy,strcat,strcmp,strlen函数.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、用C语言实现strcpy,strncpy,strcat,strcmp,strlen函数(本文介绍的函数都是在Linux平台下实现的)首先介绍下文件存放结构:1.所有文件都在Mystring这个文件夹里:2.Mystring文件夹里又有四个文件夹(bin,include,o_file,src)和一个主makefile(Makefile)文件:3.bin文件夹里存放的是编译生成的执行文件:1.include文件夹里存放的是头文件:2.o_file文件夹里存放的是编译生成的.o文件:3.src文件夹里存放的是各个源文件(主函数,及几个要实现的st
2、ring处理函数):下面开始看代码:头文件,Mystring.h:(简单,就不注释了)#ifndef__MYSTRING_H__#define__MYSTRING_H__#include#include#include#includechar*mystrcpy(char*strDest,constchar*strSrc);char*mystrcat(char*strDest,constchar*strSrc);intmystrcmp(constchar*strDe
3、st,constchar*strSrc);intmystrlen(constchar*strSrc);char*mystrncpy(char*strDest,constchar*strSrc,intn);char*mystrmemcpy(char*strDest,constchar*strSrc,intn);#endif////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4、///////////////////////////////////////////////strcpy函数,mystrcpy.c:#include"../include/mystring.h"char*mystrcpy(char*strDest,constchar*strSrc){assert(NULL!=strDest&&NULL!=strSrc);char*str=strDest;/*//方法一:while((*strDest++=*strSrc++)!=' ');returnstr;*///方法二://此种方法可以考虑到内存重叠
5、的情况,但需要后续定义的mystrmemcpy函数intcount=mystrlen(strSrc)+1;str=mystrmemcpy(strDest,strSrc,count);returnstr;}char*mystrmemcpy(char*strDest,constchar*strSrc,intn){assert(NULL!=strDest&&NULL!=strSrc);char*str=strDest;if(strSrc=strDest){//内存重叠,从高地址开始拷贝strSrc=str
6、Src+n-1;strDest=strDest+n-1;while(n--){*strDest--=*strSrc--;}}else{//正常情况,不存在内存重叠while(n--){*strDest++=*strSrc++;}}returnstr;}///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
7、/////////////strncpy函数,mystrncpy.c:#include"../include/mystring.h"char*mystrncpy(char*strDest,constchar*strSrc,intn){assert(NULL!=strDest&&NULL!=strSrc);char*str=strDest;intm=0;while(*strDest!=' '){strDest++;m++;}assert(n<=m);strDest=str;while(n--){*strDest++=*strSrc++;if
8、(*strSrc==' '){*strDest=*strSrc;break;}}returnstr;}/////////////////////////////////////