Aaron学习笔记

少壮不努力,长大没饭吃!
posts - 4, comments - 13, trackbacks - 0, articles - 37

删除字符串中的一部分

Posted on 2009-01-18 12:57 赞劲小子 阅读(1709) 评论(1)  编辑 收藏 引用 所属分类: C和指针
这个题自己不会做,答案是从cdsn上得到的,写下来慢慢研究。
题目:写一个函数 int del_substr(char * str, const char *substr);
1.函数首先判断substr是否在str中,如果未出现,返回0。
2.如果出现,将str中的与substr一样的子串删除,返回1。
3.如果substr在str中多次出现,只删除第一次出现的子串,第二个参数绝对不出删除。
例如:str指向ABCDEFG,那么substr指向FGH、CDF或者XABC,都不会删除,返回0。
        如果substr为CDE,则str为ABFG,然后返回1。
#include "stdio.h"   
#define TRUE 1
#define FALSE 0
#define MAX 50
int del_substr(char *str, const char *substr);
int main(){
    
char name[MAX];
    gets(name);
    del_substr(name,
"abr");
    printf(
"%s",name);
    
return 0;
}

int del_substr ( char *str , char const *substr )
{
    
const char *p2;            /* 流遍被删字符串 */
    
char *p3;            /* 中间变量,负责校对全部字符串相等*/
    
    
for ( ; '\0' != *str ; str++ ){
        
for ( p2 = substr, p3 = str;  /* 用p3承接str的值 */'\0' != *p2 ; p2++ , p3++ ){
            
if ( *p2 != *p3 )
                
goto oo;    /*break 的话只能跳出单层循环。*/
        }

        
        
/*
        ** 给原始字符串重新赋值,以'\0' 结束
        
*/

        
while ( '\0' !=*str++ = *p3++ ))
            ;
        
        
return TRUE;
        oo:   ;   
    }

    
return FALSE;    
}

Feedback

# re: 删除字符串中的一部分  回复  更多评论   

2012-08-20 22:40 by tian
没人发现这代码是不对的吗???

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理