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

 我来答
283802332
2012-09-11 · TA获得超过3311个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:177万
展开全部
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;
}
弄臣7
2017-04-09 · TA获得超过4108个赞
知道小有建树答主
回答量:273
采纳率:84%
帮助的人:34.6万
展开全部

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();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
兔子和小强
推荐于2018-04-10 · TA获得超过6946个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1432万
展开全部
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));
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式