您的位置:首页 > 其它

设计一个字符串子串删除函数 将结果子串指针返回 用主程序验证

2017-12-08 09:48 1101 查看
#include <stdio.h>

#include <string.h>

#include<malloc.h>

#include<stdlib.h>

char *delete(char *a,char *b)

{

    char *q;

    int x=strlen(b);//strlen求字符串长度

    while((q=strstr(a,b))!=NULL)

//strstr在串中查找指定字符串b在字符串a在的第一次出现的位置

//如果查找不到,则返回NULL

    {

        strcpy(q,q+x);//strcvpy串拷贝

    }

    return a;//返回一个指针

}

int main()

{

    char *str,*s;

    str=(char *)malloc(100*sizeof(char));

    s=(char *)malloc(10*sizeof(char));

    gets(str);//从键盘输入两个字符串

    gets(s);

    char *st=delete(str,s);//接收delete函数传来的指针地址

    printf("%s %p\n",st,st);//%p输出指针所在的地址

    free(str);//free函数释放分配的内存

    free(s);

    free(st);

    return 0;
}

还有一个代码

#include<stdio.h>

#include<string.h>

char *delete(char *src, const char *sub)//const函数体内修饰局部变量

{

    char *st = src, *s1 = NULL;

    const char *s2 = NULL;

    while (*st&& *sub)

    {

        s1 = st;

        s2 = sub;

        while (*s1 && *s2 &&!(*s1 - *s2))//

        {

            s1++;

            s2++;

        }

        if (!*s2)

        {

            while (*st++=*s1++);

            st = src;

        }

        st++;

    }

    return (src);

}

int main()

{

    char s1[1000];

    char s2[1000];

    gets(s1);

    gets(s2);

    printf("result:%s\r\n", delete(s1, s2));

    system("pause");

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐