#include<iostream>
using namespace std;
void myitoa(const int num,char *ch);
int myatoi(const char *ch);
void mystrcpy(char* dest,const char* source);
int mystrcmp(char *source1,char*source2);
void mystrcat(char *dest,char *source);
int mystrlen(char *ch);
void main()
{
int a=-123;
char ch[10];
myitoa(a,ch);
cout<<a<<'/t'<<ch<<endl;
char ch1[]="+123";
int b;
b=myatoi(ch1);
cout<<ch1<<'/t'<<b<<endl;
char ch_dest[10];
mystrcpy(ch_dest,ch1);
cout<<"复制源:"<<ch1<<endl;
cout<<"复制点:"<<ch_dest<<endl;
int flag;
flag=mystrcmp(ch,ch_dest);
if(flag)
{
cout<<"两个字符串不相等"<<endl;
}
else
{
cout<<"两个字符串相等"<<endl;
}
cout<<"mystrcat.........."<<endl;
mystrcat(ch,"xiesiyuan");
cout<<ch<<endl;
cout<<"mystrlen.........."<<endl;
cout<<mystrlen(ch)<<endl;
}
void myitoa(const int num,char *ch)
{
int temp=num;
int tag,i(0),j(0);
char temp_ch[11];
if(temp<0)
{
temp=-temp;
tag=-1;
}
do
{
temp_ch[i++]=temp%10+'0';
temp/=10;
}while(temp>0);
i--;
if(tag==-1) //负数
{
ch[j]='-';
j++;
}
while(i>=0)
{
ch[j++]=temp_ch[i--];
}
ch[j++]='/0';
}
int myatoi(const char *ch)
{
int sum(0),i(0),tag;
while(ch[i]==' '||ch[i]=='/t') //先消去前面的空格和制表符
{
i++;
}
if(ch[i]=='-') //检查是否是负数
{
tag=-1;
}
if(ch[i]=='-'||ch[i]=='+') //检查是否有符号
{
i++;
}
while(ch[i]!='/0')
{
sum=ch[i++]-'0'+sum*10;
}
if(tag==-1) //负数
{
sum=-sum;
}
return sum;
}
char* mystrcpy(char* dest,const char* source)
{
if((dest==NULL)||(source==NULL))
return 0;
char *temp=dest;
while((*dest++=*source++)!='/0');
return temp
}
int mystrcmp(char *source1,char*source2)
{
char *pt1=source1,*pt2=source2;
do
{
char c1=*pt1++;
char c2=*pt2++;
if(c1=='/0'||c2=='/0')
return c1-c2;
}while((c1!='/0')&&(c2!='/0');
return 0;
}
char* mystrcat(char *dest,char *source)
{
if((dest==NULL)||(source==NULL))
return 0;
char *temp=dest;
while(*dest++!='/0');
dest--;
while((*dest++=*source++)!='/0')
return temp;
}
int mystrlen(char *ch)
{
int len=0;
char *temp=ch;
while(*temp!='/0')
{
len++;
temp++;
}
return len;
}
需要注意的是:
1、程序的健壮性,检查参数的有效性
2、检查指针的有效性时候,尽量使用dest!=NULL,而不是用!dest这样的形式,隐式转换中char*和bool是相通的
2、检查是否到大结尾,在循环里面while()也用!='/0',另外注意的是边界检查