C语言 ,不用string.h的函数,实现A+B A-B的字符串处理功能。

请输入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;
}
      

你可能感兴趣的:(人工智能,算法)