目前程序还有缺陷,无法处理源字符串中重复出现子字符串的情况。
我似乎没有编程的天赋,这么几行代码,简单的逻辑,却费了很长时,几近痛苦的完成。
也许是努力不够吧,编程也是熟练工种,熟能生巧……在这个自我安慰睡去吧!:)
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++;
}