新人C语言编程问题求解!!!!!!!!

图片说明

新人一个不要太高级

 #include <stdio.h>

#include <string.h>

#define STRING_SIZE 80

void delete_substr(const char *str, const char *substr, char *resultstr) {

int i, j;

unsigned long substrlen, resultstrlen;

char *p;

substrlen = strlen(substr);

strcpy(resultstr, str);

resultstrlen = strlen(resultstr);

p = strstr(resultstr, substr);

while(p != NULL) {

        for(i = 0; i < substrlen; i++) {

            for(j = (p - resultstr) + substrlen - i; j < resultstrlen; j++){

                resultstr[j - substrlen] = resultstr[j];

            }
               resultstrlen=resultstrlen-substrlen;

               resultstr[resultstrlen] = '\0';
        }

        p = strstr(resultstr, substr);

    }

}

int main(void)

{

char str[STRING_SIZE + 1], substr[STRING_SIZE + 1], resultstr[STRING_SIZE + 1];

scanf("%s", str);

scanf("%s", substr);

delete_substr(str, substr, resultstr);

printf("%s\n", resultstr);

return 0;

}

#include
#include
#include
using namespace std;

char *includeStr(char s[], char t[]) {
int i, j, k;
for (i = 0; s[i]; ++i) {
if (s[i] == t[0]) {
k = i + 1;
for (j = 1; t[j] == s[k] && s[k] && t[j]; ++k, ++j);
if (t[j] == '\0') return s + i;
}
}
return 0;
}

void delStr(char s[], char t[]) {
char *p;
while (p = includeStr(s, t))
strcpy(p, p + strlen(t));
}

int main()
{
char ch1[100], ch2[100];
printf("input first string:");
gets(ch1);
//printf("%s\n", ch1);
printf("input deleted string:");
gets(ch2);
//printf("%s\n", ch2);
printf("result string:");
delStr(ch1, ch2);
printf("%s", ch1);
return 0;
}

 亲测有效

图片说明


这个问题有个bug,问:主串s1=“aabaabacdeg”子串s2=“aaba”,请问结果是“cdeg”还是“abacdeg”
(问题就是:主串中重叠的子串怎么处理)