| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5323 人关注过本帖
标题:求助!从S1字符串中删除S2字符串怎么写
只看楼主 加入收藏
jiaerboy
Rank: 1
来 自:山西朔州
等 级:新手上路
帖 子:16
专家分:0
注 册:2006-6-6
结帖率:100%
收藏
 问题点数:0 回复次数:7 
求助!从S1字符串中删除S2字符串怎么写
我实在是不写不出来啦,研究了两天了,
void del_substr(char *str,char const *substr)

{
        while(*str)
        {
            if(*str==*substr)
            {
                while(*str)
                {
                    *str=*++str;
                }
            }
            if(*str=='\0'&&*substr=='\0')
                return;
            str++;
            substr++;
        }
}
越写越不像啊

[[it] 本帖最后由 jiaerboy 于 2008-10-2 21:48 编辑 [/it]]
搜索更多相关主题的帖子: 字符 删除 
2008-10-02 21:42
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:0 
#include <stdio.h>
#include <tchar.h>
#include<string.h>
int main()
{
    char a[]="abc111abc11abc";
    char b[]="abc";
    int i,j,k;
    int c=1;
    for(i=0;i<strlen(a);i++)
    {
        c=1;
        k=strlen(b);
        for(j=0;j<k;j++)
        {
            if(a[i+j]!=b[j])c=0;            
        }
        if(c==1)
        {            
            for(j=0;j<=strlen(a);j++)
            {
                a[i+j]=a[i+j+k];
            }
        }
    }
    printf("%s\n",a);    
    getchar();
    return 0;
}

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2008-10-02 22:17
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
现一个一个字符的比较 S1中是否包含S2

羊肉串 葡萄干 哈密瓜!!
2008-10-02 22:20
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
这个应该符合你的要求
程序代码:
#include<stdio.h>
#include<string.h>
int main(void)
{
    char string1[20];
    char string2[10];
    char *p,*q;
    q=string1;
    gets(string1);  /* 输入字符串string1 */
    gets(string2); /* 输入字符串string2*/
    p=strstr(string1,string2);      /* 查找在sting1中有无string2的字符串,*/
                                  /* p是接收返回值的指针 */
    if(p==NULL)    printf("error");   /* 如果没有,返回值为NULL */
    else         /* 如果有,返回值为string1中相同点的指针地址 */
        while(*q)
        {
            if(q==p)
                q+=strlen(string2);
            printf("%c",*q);
            q++;
        }       /* 打印去掉string2相同字符的string1字符串 */
    printf("\n");
    getch();
}
2008-10-03 01:37
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
这是什么代码?

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-10-03 02:14
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:0 
4楼错了
strstr(s1,s2) 在s1中第一次包含s2字符串的位置指针
可能出现包含几次的情况
应该用循环 直到为0为止

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2008-10-03 09:21
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
谢谢ml232528朋友的指教
谢谢这位朋友,现把代码改正,再贴于此,请多指教。谢谢。
程序代码:
#include<stdio.h>
#include<string.h>
#define N 100
int Del(char *str1,char *str2)
{
    char *p;
    char cmp[N];
    char *q,*q1;
    int i=0;
    q=cmp;
    q1=str1;
    p=strstr(str1,str2);   /* 比较两个字符串  */
    if(p==NULL)     return 0;  /* 如果str1中没有str2字符串中的内容,返回 0 */
    else
    {
        while(*q1)  /* 循环结束条件是字符串str1结束 */
        {
            if(q1==p)      /* 如果遇到相同字符串的首地址 */
                q1+=strlen(str2);   /* 越过相同的字符串 */
            cmp[i]=*q1; /* 把删去相同的部分的新字符串暂存到数组cmp中 */
            i++;
            q1++;
        }
        cmp[i]='\0';  /* 在数组结尾加上结束标记 */
        strcpy(str1,cmp);  /* 将新的字符串拷贝到字符串str1中  */
        return 1;          /* 返回1 */
    }
}
int main(void)
{
    char str1[N],str2[N];
    puts("input the str1 and str2:");
    gets(str1);
    gets(str2);
    if(strcmp(str1,str2)<=0)  /* 如果 str2 大于等于 str1 ,退出程序 */
    {
        puts("error");
        exit(0);
    }
    while(Del(str1,str2))  /* 如果函数返回值为真,就再重新调用函数,直到为假 */
        Del(str1,str2);
    puts(str1);
    getch();
}
2008-10-04 01:33
hbhbhb2008
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-4
收藏
得分:0 
谁告诉我怎么删除 自己发的帖子啊 求救~~
2008-11-12 19:16
快速回复:求助!从S1字符串中删除S2字符串怎么写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035742 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved