请输入A串信息:abcdef
请输入B串信息:ac
abcdefac
B串的长度是:2
B不是A的子串,请重新输入B的值:
ad
B不是A的子串,请重新输入B的值:
abcde
A-B后的结果是:f
#include <stdio.h>#define MAX 100void fun(char* a, char *b, char *c) {int ai = 0;int bi = 0;int ci = 0;while (a[ai])c[ci++] = a[ai++];while (b[bi])c[ci++] = b[bi++];c[ci] = '\0';
}int strlen(char* a) { //求字符串长度int len = 0;while (a[len])len++;return len;
}
int fun1(char* a, char* b) {//a中找b,没找到返回-1int ai = 0;int alen = strlen(a);int blen = strlen(b);while (a[ai] && ai+blen<=alen) {int flag = 1;//默认匹配for (int i = 0; i < blen; i++)if (a[ai + i] != b[i]) {flag = 0;break;}if (flag)return ai;ai++;}return -1;
}void fun2(char* a, char* b, char* c) {int ai = 0;int blen = strlen(b);int ci = 0;int find = fun1(a, b);while (ai < find) {c[ci++] = a[ai++];}while (ai < find + blen)ai++;while (a[ai]) {c[ci++] = a[ai++];}c[ci] = '\0';
}int main()
{char A[MAX], B[MAX];char res[MAX * 2], res2[MAX];printf("请输入A串信息:");gets(A);printf("请输入B串信息:");gets(B);fun(A, B, res);puts(res);printf("B串的长度是:%d\n",strlen(B));while (fun1(A, B) == -1) {puts("B不是A的子串,请重新输入B的值:");gets(B);}fun2(A, B, res2);printf("A-B后的结果是:");puts(res2);return 0;
}