实现atoi,itoa,strcmp,strcpy,strcat,strlen函数
来源:互联网 发布:云计算 erp 标题 编辑:程序博客网 时间:2024/05/01 12:55
#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',另外注意的是边界检查
- 实现atoi,itoa,strcmp,strcpy,strcat,strlen函数
- 实现atoi,itoa,strcmp,strcpy,strcat,strlen函数
- atoi itoa strcpy strcmp strlen strcat memcpy memset实现
- 基础函数的实现(strcpy,strcat, strcmp, atoi, itoa)
- strcpy,strcat, strcmp, atoi, itoa函数原型实现
- strcpy,strcat, strcmp, atoi, itoa函数原型实现
- 基础函数的实现(strcpy,strcat, strcmp, atoi, itoa)
- 基础函数的实现(strcpy,strcat, strcmp, atoi, itoa)
- strcpy,strcat, strcmp, atoi, itoa函数原型实现
- strcpy,strcat, strcmp, atoi, itoa函数原型
- memcpy, strcpy, strlen, strcmp, itoa, atoi 的函数实现
- strlen strcat strcmp itoa atoi
- 微软strcpy,strcat和strcmp的实现源代码 itoa atoi
- strcpy; strcmp; strlen; strcat 函数实现
- Strcat,strcpy,strcmp,Strlen函数原型-实现
- strcpy,strncpy, strlen, strcmp strcat函数实现
- strlen,strcpy,strcat,strcmp函数的实现
- strlen、strcat、strcmp、strcpy函数实现
- demux mp4
- putty ssh key 配置笔记
- Toast--android基础
- session原理 1
- 复杂数据类型
- 实现atoi,itoa,strcmp,strcpy,strcat,strlen函数
- iOS内购实现及测试Check List
- HDU5023 A Corrupt Mayor's Performance Art 【线段树】
- 水晶报表制作甘特图实例
- iOS 通知中心扩展 制作总结与Demo(1)
- strace example
- Spring security深入杂谈
- session原理 2
- ios开发之NavBar和TarBar使用技巧