C语言库函数实现,备忘。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int Strlen(const char* string)
{
int leng=0;
for (int i=0;string[i]!='\0';++i)
{
++leng;
}
return leng;
}
char* Strcpy(char* dst,const char* src)
{
if(dst==NULL||src==NULL)
cerr<<"error"<<endl;
char* tmp=(char*)malloc(Strlen(dst)+1);
memset(tmp,0,Strlen(tmp)+1);
for(int i=0;i<=Strlen(dst);++i)
{
*(tmp+i)=*(src+i);
}
return tmp;
}
int Strcmp(const char* dst,const char* src)
{
if (dst==NULL||src==NULL)
cerr<<"error"<<endl;
while ((*(dst++)==*(src++))&&*src);
return *dst-*src;
}
char* Strcat(char* dst,const char* src)
{
if (dst==NULL||src==NULL)
cerr<<"error"<<endl;
char* tmp=(char*)malloc(Strlen(dst)+Strlen(src)+1);
memset(tmp,0,Strlen(dst)+Strlen(src));
for(int i=0;i<=Strlen(dst);++i)
{
*(tmp+i)=*(dst+i);
}
for(int j=0;j<=Strlen(src);++j)
{
*(tmp+Strlen(dst)+j)=*(src+j);
}
return tmp;
}
char* Strchr( char* dst,const char src)
{
if (dst==NULL||src==NULL)
cerr<<"error"<<endl;
char* tmp=dst;
while(*dst++!=src);
return dst;
}
char* Strstr( char* dst,const char* src)
{
int leng=Strlen(src);
if(leng<1)
return dst;
for (char* pos=dst;pos!=dst+Strlen(dst)-leng+1;pos+=1)
{
if (strncmp(pos,src,leng)==0)
return pos;
}
return (char*)(-1);
}
int main()
{
char* dst="hello";
char* src="llo";
cout<<"dst leng :"<<Strlen(dst)<<" src leng "<<Strlen(src)<<endl;
cout<<"strcmp "<<Strcmp(dst,src)<<endl;
cout<<"strcat :"<<Strcat(dst,src)<<endl;
cout<<"strchr :"<<Strchr(dst,'e')<<endl;
cout<<"strstr :"<<Strstr(dst,src)<<endl;
cout<<"strcpy :"<<Strcpy(dst,src)<<endl;
return 0;
}