首页 > 其他 > 详细

《C和指针》章节后编程练习解答参考——6.2

时间:2015-11-15 17:43:37      阅读:204      评论:0      收藏:0      [点我收藏+]

《C和指针》——6.2

题目:

  编写一个函数,删除源字符串中含有的子字符串部分。

函数原型:

  int del_substr(char *str, char const *substr);

解答代码:

#include <stdio.h>

int del_substr(char *str, char const *substr)
{
    if ((*str != NULL) && (*substr != NULL))
    {
        for(; *str != \0; str++)
        {
            if (*str == *substr)
            {
                int i=0;
                while ((*(str+i) != \0) && (*(substr+i) != \0))
                {
                    if (*(str+i) == *(substr+i))
                    {
                        i++;    //保持两个字符串指针同时加1
                    }
                    else
                        break;
                }

                if ((*(substr+i) == \0))    //子字符串检测结束
                {
                    for(; *(str+i) != \0; str++)
                    {
                        *str = *(str+i);
                    }
                    *str = \0;    //将源字符串后边的字符舍弃
                    return 1;
                }
                else
                {
                    return 0;                
                }
            }
        }
    }
    return 0;
}

int main()
{
    char source[] = "ABCDEFGHIJKLMN";
    char subsource[] = "DEF";

    printf("%s\n", source);
    printf("%s\n", subsource);

    if (del_substr(source, subsource) == 1)
    {
        printf("Delete the substr:\n");
        printf("%s", source);
    }
    else
        printf("Have not found the substr!");

    getchar();
    return 0;
}

注:

1、应先判断源字符串中是否包含子字符串,检测时要保持两个指针增量同步。

2、子字符串对比完后判断是否包含于源字符串。

 

《C和指针》章节后编程练习解答参考——6.2

原文:http://www.cnblogs.com/microxiami/p/4966844.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!