当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

在源字符串中删除子字符串的函数

    目前程序还有缺陷,无法处理源字符串中重复出现子字符串的情况。

    我似乎没有编程的天赋,这么几行代码,简单的逻辑,却费了很长时,几近痛苦的完成。

    也许是努力不够吧,编程也是熟练工种,熟能生巧……在这个自我安慰睡去吧!:)

 


    include
    #define TRUE    1
    #define FALSE   0

    del_substr( char *str, char const *substr )
    {
        char *s;
        char const *t;
        int status = FALSE;

        for ( s = str, t = substr; *t != '' && *s != ''; ) {
            if ( *s != *t ) {
                t = substr;
                status = FALSE;
            }
            if ( *s == *t ) {
                status = TRUE;
                s++, t++;
            }
            if ( status == FALSE ) {
                s++;
            }
        }

        if ( status == FALSE )
            return FALSE;
        else {
            do {
                *( s - ( t - substr ) ) = *s;
            } while ( *s++ != '' );
            return TRUE;
        }
    }

    main( void )
    {
        char *src = "ABCDBCDEF";
        char *sub = "BCD";

        if ( del_substr( src, sub ) == FALSE )
            printf( "not found substr: %s\n", sub );
        else
            printf( "del substring is: %s\n", src );
    }


    升级版本:2005年6月20日

    /* 可以处理空字符串,以及源串中有重复子串的情况 */


    #include <stdio.h>


    #define TRUE    1


    #define FALSE   0

 

 

    del_substr( char *str, char const *substr )


    {


       char *s;


       char const *t;


       int status = FALSE;


       int num = 0;

 

 

       for ( s = str, t = substr; *s != ''; ) {


           if ( *s != *t ) {


               t = substr;


               status = FALSE;


           }


           if ( *s == *t ) {


               status = TRUE;


               s++, t++;


           }


           if ( status == FALSE ) {                  /* 一直不等才s++    */


               s++;


           }


  

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接