| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 828 人关注过本帖
标题:在长字符串中删去短字符串
只看楼主 加入收藏
lindayanglong
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2008-3-9
收藏
 问题点数:0 回复次数:1 
在长字符串中删去短字符串
在长字符串中删去短字符串
下面的程序是在"askdaskaskdaskg"删去"ask",程序书上已给出,但是本人水平有限实在分析不出它的思想,请大家帮帮忙,感谢
#include<iostream>
using namespace std;
void main()
{
    char uu[20],*p,*sub="ask",*str="askdaskaskdaskg",*str2;
    int n=0,i=0;
    p=sub;
    str2=str;

    while(*str2)
    {
        while(*p)
        {
            if(*p==*str2)

                break;
            p++;
        
        }
            
        if(*p=='\0')
        {
            uu[i]=*str2;
            i++;
        }
        str2++;
        p=sub;
    }
    uu[i]=0;
    str=uu;
    cout<<str<<endl;
}
搜索更多相关主题的帖子: 字符 删去 
2008-10-15 15:23
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
char uu[20];//结果存放的地方
char *p ; //被对照的字串指针,做游标用
char *sub="ask"; //被对照的字串指针
char *str="askdaskaskdaskg";//被检查的字串指针
char *str2; //被检查的字串游标指针
    int n=0,i=0;
    p=sub;//游标指向sub开始的地方
    str2=str;//游标指向str开始的地方

    while(*str2)//这里严格的写法应该是 while(*str2!='\0')
    {
        while(*p)//这里严格的写法应该是 while(*p!='\0')
        {
            if(*p==*str2)//如果char值相同
                break;//则跳出这个循环
            p++;//游标移到sub下一个char值 注:游标移到字串结束的地方,也会跳出这一层循环        
        }
            
        if(*p=='\0')//表示在str[i]处没有和sub有相同的char值.
        {
            uu[i]=*str2;//则可以将str[i]这个char值装入到结果容器中
            i++;//计数器记录加1 , 让下标移到下一个char的位置
        }
        str2++;//游标移到str的下一个char值
        p=sub;//游戏重新回到sub的开始准备下一轮检查
    }
    uu[i]=0;//为结果字串打上结束符
    str=uu;//结果字串地址赋给str.
    cout<<str<<endl;//打出来

根据以上分析,这个程序并不是将str中的"ask"去掉,而是将str中的'a'、‘s’、'k'去掉。
虽然结果都是"ddg",但概念不一样,如果想去掉样本字串的算法是不一样的,你可以把str换成"searktkdsca"就知道,它不是去掉了样本字串"ask".
2008-10-15 23:27
快速回复:在长字符串中删去短字符串
数据加载中...
 
   



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

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