首页 > 代码库 > 删除子串,只要是原串中有相同的子串就删掉所有子串。子串至少两个字符。
删除子串,只要是原串中有相同的子串就删掉所有子串。子串至少两个字符。
//删除子串,只要是原串中有相同的子串就删掉所有子串。子串至少两个字符。#include<stdio.h>#include<string.h>char* delete_string(char s[],char a[]);int main(){ char s[255]; char data[255][255];//存放相同的子串 int i,j,k; int length; int row = 0,column;//data[][]的行标和列标 gets(s); length = strlen(s); //寻找相同的子串 for(i=0;i<length-3;i++) { for(j=i+1;j<length-1;) { if((s[i] == s[j]) && (s[i+1] == s[j+1])) { column = 0; k = 0; do { data[row][column++] = s[j]; j++;k++; }while(s[i+k] == s[j]); data[row++][column] = ‘\0‘; } else { j++; } } } puts("The same string:"); for(i=0;i<row;i++) { puts(data[i]);//输出相同的子串 } for(i=0;i<row;i++) { delete_string(s,data[i]); } puts("After deleted:"); puts(s); return 0;}//函数功能:如果字符串s中包含子串a,则将s中的a删除。否则不做任何改变。char* delete_string(char s[],char a[]){ int length_s; int length_a; int i,j,k; length_s = strlen(s); length_a = strlen(a); for(i=0;i<length_s;) { j = 0; if(s[i] == a[j]) { do { i++;j++; }while((j < length_a) && (s[i] == a[j])); if(j == length_a) { //表明s中包含子串a,将其删除。 for(k=i;k<=length_s;k++) { s[k-length_a] = s[k]; } i = i - length_a; j = 0; } else { j = 0; } } else { i++; } } return s;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。