| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2735 人关注过本帖
标题:删除一个字符串中的子串,要求不用库函数!结果不对大家帮我看看!
只看楼主 加入收藏
ybjkl
Rank: 2
等 级:论坛游民
帖 子:86
专家分:85
注 册:2011-6-21
结帖率:95.65%
收藏
已结贴  问题点数:20 回复次数:2 
删除一个字符串中的子串,要求不用库函数!结果不对大家帮我看看!
函数原型是这样的 int del_sub(const char *str, const char *sub_str,char *result_sub);
输入:str 被操作的字符串
      sub_str需要查找并删除的特定字符子串
输出:在str字符串中删除所有sub_str子串后的结果
返回:删除子字符串的个数

#include<stdio.h>
#include<string>
int del_sub(char *str, char *sub_str,char *result_sub);

main()
{
    int count=0;
    char str[100],sub_str[100],result_sub[100];
    printf("input the string:\nstr=:");
    gets(str);
    printf("input the string:\nsun_str=:");
    gets(sub_str);
    count=del_sub(str,sub_str,result_sub);
    printf("\n");
    printf("%d\n",count);
}

int del_sub(char *str,char *sub_str,char *result_sub)
{
    const char *p1,*p2;
    char uu[100];
    int i=0;
    int count=0;
    p1=str;
    p2=sub_str;
    while(*p1)
    {
        while(*p2)
        {
            if(*p1!=*p2)
            {
                uu[i++]=*p1; //所指元素不相等,同时把除子串以外的用数组存储,退出循环,p1++;
                             //问题就出在这个地方,如果子字符串只有一部分与被操作的字符串相等,前
                             //面相等的一部分不能被保存下来,该怎么处理呢?

             break;
            }
             else            //所指元素相等,两指针同时自加;
            {
                p2++;
                p1++;
            }
        }
        if(*p2=='\0')       //遇到结束符,统计子串出现的次数,p2重新指向子串的首地址;
        {
            count++;
            p2=sub_str;
        }   
        p1++;
    }
    uu[i]='\0';
  result_sub=uu;
  puts(result_sub);         //输出除子串的剩余字符串;
    return count;           //返回子串出现的次数
}
搜索更多相关主题的帖子: include 字符串 count 
2011-09-06 11:35
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
华为的这道面试题没有规定不要库函数吧

                                         
===========深入<----------------->浅出============
2011-09-06 11:47
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:20 
随便改了一下,你看看吧。
程序代码:
#include<stdio.h>
#include<string>
int del_sub(char *str, char *sub_str,char *result_sub);

main()
{
    int count=0;
    char str[100],sub_str[100],result_sub[100];
    printf("input the string:\nstr=:");
    gets(str);
    printf("input the string:\nsun_str=:");
    gets(sub_str);
    count=del_sub(str,sub_str,result_sub);
    printf("\n");
    printf("%d\n",count);
}

int del_sub(char *str,char *sub_str,char *result_sub)
{
    const char *p1,*p2,*j;
    int enterdepth=0;
    char uu[100];
    int i=0;
    int count=0;
    p1=str;
    p2=sub_str;
    while(*p1)
    {
        while(*p2)
        {
            if(*p1!=*p2)
            {
              
               for(j=p1-enterdepth;j!=p1;j++)
               {
                   uu[i++]=*j;
               } //所指元素不相等,同时把除子串以外的用数组存储,退出循环,p1++;
             //问题就出在这个地方,如果子字符串只有一部分与被操作的字符串相等,前
               p2-=enterdepth;
               enterdepth=0;
               if(*p1==*p2)
               {
                    break;
               }
               uu[i++]=*p1;
               
               p1++;//面相等的一部分不能被保存下来,该怎么处理呢?
             break;
            }
             else            //所指元素相等,两指针同时自加;
            {
                enterdepth++;
                p2++;
                p1++;
            }
            
        }
        if(*p2=='\0')       //遇到结束符,统计子串出现的次数,p2重新指向子串的首地址;
        {
            count++;
            p2=sub_str;
            enterdepth=0;
        }   
  //      p1++;
    }
    uu[i]='\0';
  result_sub=uu;
  puts(result_sub);         //输出除子串的剩余字符串;
    return count;           //返回子串出现的次数
}


[ 本帖最后由 czsbc 于 2011-9-6 12:40 编辑 ]
2011-09-06 12:30
快速回复:删除一个字符串中的子串,要求不用库函数!结果不对大家帮我看看!
数据加载中...
 
   



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

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