#include <stdio.h> /*********************************************************************** * Function : char *strrmv3(char *s1, char *s2); * Author : loops * Date : 2007.11.28 * Description: Remove sub string s2 from s1 without invoking any other functions. * Maximum copy times: strlen(s1); Maximum scan times: strlen(s1) * Assembly instructions: 49 ***********************************************************************/ char* strrmv3( char *s1, char *s2) { char *w=s1, *r=s1, *p;//w: 写入位置,r: 读入位置 p: 用于处理s2 for( p=s2; *r; *w++=*r++ ) !(*p)&&(w-=(p-s2),p=s2), (*r!=*p)?p=s2:p+=1; *p ? *w='/0' : *(w-=(p-s2))='/0';//如果*p=='/0',说明s1末尾匹配成功了。 return s1; } int main() { char str[]="peter@163.com.cn. jack@163.com.cn tom@163.com.cn"; printf("%s/n",strrmv3(str,".cn")); return 0; }