/** c和指针,第六章 第二题 删除一个字符串的一部分, 例如:ABCDEFG ,如果输入FGH,CDF,XABC则删除失败, 如果输入CDE,则删除成功,得到ABFG 删除函数原型:int del_substr(char *stre,char const *substr) stre 是要操作的源字符串,substr是要删除的子字符串。 */ #include <stdio.h> #include <stdlib.h> int del_substr(char *stre,char const *substr) { char *str = stre; char *source = str; char string = *source; char const *sub_str; while(string!='\0') { sub_str = substr; while(*sub_str!='\0'&&string!='\0'&&*sub_str==string) { sub_str++; string = *++source; } if(*sub_str=='\0') { //匹配成功!! while(*source!='\0') { *str++ = *source++; } while(*str != '\0') { *str++ = '\0'; } return 1; } str++; source = str; string = *source; } return 0; } int main() { char source[100]; char *src; char chars[100]; printf("请输入一个源字符串:\n"); gets(source); while(1) { src = &source; printf("请输入一个要删除的字符串:\n"); gets(chars); int flag = del_substr(src,chars); if(flag==0) { printf("匹配删除失败!!没有找到匹配的字符串!!\n"); continue; } printf("匹配删除成功!!:\n"); printf("%c",*source); while(*++src!='\0') printf("%c",*src); printf("\n"); break; } return 0; }