用C语言程序,通过自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和的功能

如题所述

strcat(char *p1,char *p2,char *p)
{
while(*p1) //检查指针是否到了'\0'
{
*p=*p1; //赋值
p1++; //指针指向下一个字符
p++;
}
while(*p2)
{
*p=*p2;
p2++;
p++;
}
*p='\0'; //为str3结尾加上'\0'
}

这个是strcat是3个形参的,两个形参的是这样写的
void strcat(char *p1, char *p2)
{
while(*p1)
{
p1++;
}
while(*p2)
{
*p1 = *p2;
p1++;
p2++;
}
*p1 = '\0';
}
注意 p1开的数组要比p2大哦

int strlen(char *p1)
{
char *s=p1; //将指针s指向指针p,即指向str1
while(*s) //当*s不为'\0'的时候
s++; //指针指向下一个字符
return (s-p1); //当s指向字符串的'\0'的前一位,而p指向的是开头,所以s-p就是长度
}

strcpy(char *p1, char *p2)
{
while(*p2)
{
*p1 = *p2;
p1++;
p2++;
}
}

strcmp(char *p1, char *p2)
{
//当*p1,*p2不为空,且*p1 == *p2,循环执行
while(*p1 && *p2 && (*p1 == *p2))
{
//指向下一个元素
p1++;
p2++;
}

if(*p1> *p2)
return 1;
else if(*p1< *p2)
return -1;

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-04-09

0.0+【我自己做的

【strlen
{   char ch1[10]="abc";
    int i;
    for(i=0;ch1[i]!='\0';i++);//循环到不是\0为假(结尾)
        printf("len=%d",i);//循环次数就是字符串的长度
    getch();
}
【strcpy
{   char ch1[20]="abcde",ch2[20];
    int i;
    for(i=0;ch1[i]!='\0';i++)
        ch2[i]=ch1[i];//用ch2替换掉ch1的每一位
    ch2[i]='\0';//在最后一位后面加上结束标志
    printf("%s",ch2);//%s表示输出字符串
    getch();
}
【strcat
{   char ch1[20]="abc",ch2[20]="def";
    int i,j;
    for(i=0;ch1[i];i++);
        for(j=0;ch2[j];j++)
            ch1[i+j]=ch2[j];//把ch2加在ch1的后面
    ch1[i+j]='\0'; //在最后一位后面加上结束标志
    printf("%s",ch1);
    getch();
}
↑过程:abcd→abcde→abcdef
【strcmp
{   charch1[20]="abc",ch2[20]="acd";
    int i;
    for(i=0;ch1[i]==ch2[i];i++)//比较到不同的那位
        if(ch1[19]=ch2[19])//如果全相同,则相等
            printf("ch1=ch2");
    if(ch1[i]>ch2[i])//不同的那位比大小
        printf("ch1>ch2");
    else if(ch1[i]<ch2[i])
        printf("ch1<ch2");
    getch();
}

第2个回答  推荐于2018-04-10
char *mystrcat(char *dst, char *src)
{
char *p = dst;
while(*p)++p;
while(*p++ = *src++);
return dst;
}
char *mystrcpy(char *dst, char *src)
{
while(*dst++ = *src++);
return dst;
}
int mystrcmp(char *dst, char *src)
{
while(*dst && *dst == *src)
{
++dst;
++src;
}
return *dst - *src;
}
int mystrlen(char *dst)
{
char *p = dst;
while(*p)++p;
return p - dst;
}
int main()
{
char s[32], t[32] = "HELLO,CHINA";
mystrcpy(s, "HELLO,");
puts(s);
mystrcat(s, "USA");
puts(s);

printf("%d %d\n", mystrlen(s), mystrcmp(s, t));
}本回答被提问者和网友采纳

用C语言程序,通过自定义函数实现字符串处理函数strcat、 strcpy...
char *s=p1; \/\/将指针s指向指针p,即指向str1 while(*s) \/\/当*s不为'\\0'的时候 s++; \/\/指针指向下一个字符 return (s-p1); \/\/当s指向字符串的'\\0'的前一位,而p指向的是开头,所以s-p就是长度 } strcpy(char *p1, char *p2){ while(*p2){ p1 = *p2;p1++;p2++;} } ...

编C语言程序:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp...
char *strcat(dst, src) - concatenate (append) one string to another Purpose:Concatenates src onto the end of dest. Assumes enough space in dest.Entry:char *dst - string to which "src" is to be appended const char *src - string to be appended to the end of "dst"Exit:T...

3、用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和...
1.strcat void mycat(char *s1, char *s2){ while(*s1++);s1--;while(*s1++ = *s2++);} 2.strcpy void mycpy(char *s1, char *s2){ while(*s1++ = *s2++);} 3.strcmp int mycmp(char *s1,char *s2){ for( ; *s == *t;s++,t++)if(*s == 0) return 0;return ...

编程:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、str...
1.strcat void mycat(char *s1, char *s2){ while(*s1++);s1--;while(*s1++ = *s2++);} 2.strcpy void mycpy(char *s1, char *s2){ while(*s1++ = *s2++);} 3.strcmp int mycmp(char *s1,char *s2){ for( ; *s == *t;s++,t++)if(*s == 0) return 0;return ...

用C\/C++编程实现strlen,strcmp,strcpy,substr,strrev,strcat字符串处理...
cout<<"1.strlen计算字符串的长度"<<endl;cout<<"2.strcmp两个字符串的比较"<<endl;cout<<"3.strcpy把后面的字符串复制在第一个的后面"<<endl;cout<<"4.strcat把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\\0')并添加'\\0'"<<endl;cout<<"5.substr返回一个从指定位置开始,并具有...

C语言里,函数strcmp,strcat,strlen,strlwr和strupr的全称都是什么?_百 ...
string compare ;string cat;cat指嫁接 String length;

字符串函数:strlen函数,strcpy函数,strcat函数,strcmp函数
模拟实现strcpy:代码示例:运行结果:strcat函数则用于将一个字符串追加到另一个字符串的末尾。代码示例:运行结果:模拟实现strcat:代码示例:运行结果:strcmp函数用于比较两个字符串是否相等。代码示例:运行结果:模拟实现strcmp:代码示例:运行结果:通过以上内容,我们了解了strlen、strcpy、strcat和strcmp...

编程实现strlen,strcmp,strcpy,substr,strrev,strcat字符串处理函数的功...
strcat(char*A,char*B)把字符串B连接到字符串A尾部。include<iostream.h> include<string.h> void main(){ char *A="test1";char *B="test12";cout<<strlen(A)<<endl;\/\/此处输出5,是由test1\\0得出,\\0不计算 cout<<sizeof(A)<<endl;\/\/此处输出4,A为指针,占四个字节 char C[...

请问strlen;strcpy;strcmp;strcat在C语言中的使用格式​
strlen(测字符串长度):strlen(字符数组)strcpy(字符串复制):strcpy(字符数组1,字符串2),将字符串2复制到字符数组1中去 strcmp(字符串比较):strcmp(字符串1,字符串2),如果字符串1=2,函数值为0;如果字符串1>2,为正整数;如果字符串1<2,为负整数 strcat(字符串连接):strcat(字符...

...要求调用strcat,strchr,strcmp,strcpy,四个函数
cout<<"输入字符串2";cin>>Buffer2;cout<<"Strcmp函数如下"<<endl;if (strcmp(Buffer1,Buffer2) == 0){ cout<<"两个字符串一致"<<endl;} else { cout<<"两个字符串不一样"<<endl;} cout<<"Strcat函数如下"<<endl;strcat(Buffer1,Buffer2);cout<<Buffer1<<endl;cout<<"Strcpy函数...

相似回答