注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Aspirer's blog

停止维护,新博客地址:http://aspirer.wang/

 
 
 

日志

 
 

查找第一个、最后一个子串  

2009-08-10 16:30:42|  分类: 学习心得 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

查找第一个、最后一个子串 - aspirer - Aspirers blog

#include <string.h>
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <assert.h>
char *findsubstr(const char *longstr, const char *substr)
{
    int i, j, k;
    int lslen; = strlen(longstr);
    int sublen; = strlen(substr);
    assert(longstr);
    assert(substr);
    lslen = strlen(longstr);
    sublen = strlen(substr);
    for (i = 0; i < lslen; ++i)
    {
      for (k = i, j = 0; j < sublen; ++j, ++k)
      {
           if (substr[j] != longstr[k])
           {
                break;
            }
      }
      if (j == sublen)
      {    
           return (char *)(longstr + i);
      }
    }
    return NULL;
}

char *findlastsubstr(const char *longstr, const char *substr)
{
    char *p = (char *)longstr;
    char *lastsub = NULL;
    while (p = findsubstr(p, substr))
    {
       lastsub = p++;
    }
    return lastsub;
}

int main()
{
    char longstr[] = "abdabcbdabc";
    char substr[] = "abc";
    char *res = malloc(strlen(substr) + 1);
    char *p = NULL;
    strncpy(res, findsubstr(longstr, substr), strlen(substr));
    res[strlen(substr)] = '\0';   
    if (res)
    {
       puts(res);
    }
    free(res);
    p = findsubstr(longstr, substr);
    if (p)
    {
       puts(p);
    }
    p = findlastsubstr(longstr, substr);
    if (p)
    {
       puts(p);
    }
    return 0;
}

  评论这张
 
阅读(451)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018