请编写一个函数,删除一个字符串的一部分,函数的原型如下:
int del_substr(char *str,char const *substr )
函数首先应该判断substr是否出现在str中,如果它并未出现,函数就返回0;如果出现,函数应该把str 中位于该子串后面的所有字符复制到该子串的位置,从而删除这个子串,然后函数返回1。如果substr多次出现在str中,函数只删除第1次出现的子串,函数的第二个参数绝不被修改。
要求:1不能使用任何操纵字符串的库函数
2 不能使用下标
[cpp] view plain copy
-
-
-
-
- #include<stdio.h>
- #include<string.h>
-
-
- #define NUL '\0'
- #define FALSE 0
- #define TRUE 1
-
- char *match( char *str, char *want);
- int del_substr( char *str, char *substr );
-
-
- int main()
- {
- char str[] = "ABCDEFG";
- char *substr = "CDE";
- del_substr(str, substr );
- puts( str );
- return 0;
-
- }
-
-
-
-
- char *match( char *str, char *want)
- {
- while( *want != NUL) //在want中匹配str,如果有则返回剩余的字符
- if( *str++ != *want++ )
- return NULL;
- return str;
- }
-
-
-
-
- int del_substr( char *str, char *substr )
- {
-
- char *next;
- char *find = str;
-
-
-
-
-
- while( *find != NUL)
- {
- next = match( find, substr );
- if( next != NULL)
- break;
- find++;
- }
-
-
-
-
- if( *find == NUL)
- return FALSE;
-
-
-
-
- while( *find++ = *next++ );
-
- return TRUE;
-
- }
-