樱桃红蜈蚣:请教,用C++或C语言编三个程序

来源:百度文库 编辑:高考问答 时间:2024/05/08 14:55:53
这三个程序拷贝(strcpy),比较(strcmp),连接(strcat),就是三个函数.

#include <iostream>
using namespace std;

char* Strcpy(char *dest,const char *source)
{
if(dest!=NULL && source!=NULL)
{
char * returnstr = dest;
while('\0'!=(*dest++ = *source++));
return returnstr;
}
else
{
return NULL;
}
}

bool Strcmp(const char* str1,const char* str2) //true表示相同,false表示不同
{
if(str1!=NULL && str2!=NULL)
{
while(*str1!='\0' && *str2!='\0' && *str1++ == *str2++);
if(*str1=='\0' && *str2=='\0')return true;
}
return false;
}

char* Strcat(char* dest,const char* source)
{
if(dest!=NULL && source!=NULL)
{
char *returnstr = dest;
while(*dest++!='\0');
dest--;
while('\0'!=(*dest++ = *source++));
return returnstr;
}
else
{
return NULL;
}
}

int main()
{
char *s1 = new char[20];
char *s2 = new char[20];
Strcpy(s1,"12345");
Strcpy(s2,"67890");
if(Strcmp(s1,s2))
cout<<"相同"<<endl;
else
cout<<"不同"<<endl;
Strcat(s1,s2);
cout<<s1<<endl;
return 0;
}

复制:
void strcpy2(char* des, char* src){
for(int i=0; *(src+i)!=0;i++)
*(des+i)=*(src+i);
*(des+i)=0;
}

比较:返回-1不同, 0为相同.
int strcmp2(char* des, char* src){
for(int i=0; *(src+i)!=0;i++)
if(*(des+i)!=*(src+i)) return -1;

return 0;
}

连接:
void strcat2(char* des, char* src){
for(int i=0; *(src+i)!=0;i++) ;
for(int j=0; *(src+j)!=0;j++,i++)
*(des+i)=*(src+j);
}

没有调试, 你调一下吧, 有问题发邮件给我.

复制:
char* strcpy(char* des, char* src){
for(int i=0; src+i!=0;i++)
*(des+i)=*(src+i);
return des;
}

比较:返回-1不同, 0为相同.
int strcmp(char* des, char* src){
for(int i=0; (src+i)!=0&&(des+i)!=0;i++)
if(*(des+i)!=*(src+i)) return -1;

return 0;
}

连接:
char* strcat(char* des, char* src){
for(int i=0; (des+i)!=0;i++) ;
for(int j=0; (src+j)!=0;j++,i++)
*(des+i)=*(src+j);
return des;
}