请输入A串信息:abcdef
请输入B串信息:ac
abcdefac
B串的长度是:2
B不是A的子串,请重新输入B的值:
ad
B不是A的子串,请重新输入B的值:
abcde
A-B后的结果是:f
-
-
- #include
-
- #define MAX 100
-
- void 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,没找到返回-1
- int 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;
- }