对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除

/**

  • @file name: main.c
  • @brief 实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除
  • @author 1810866453@163.com
  • @date 2024/06/26
  • @version 1.0 :版本
  • @property :属性介绍
  • @note 补充 注意 说明
  • CopyRight (c) 2023-2024 RISE_AND_GRIND@163.com All Right Reseverd
    */
    实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除
    1:判断字符串B中的待处理字符,去除大小写字母以外的字符
    2:通过第一次循环实现对字符串A的遍历。第二次嵌套循环找到字符串A中是否有与字符串B相同或同为大小写字符的元素。找到元素后将该位置后的元素覆盖到该位置上进行删除。
#include <stdio.h>
/**
 * @function name:	string
 * @brief  实现对字符串A进行处理,参照字符串B,只有字符串B中的字母在字符串A存在,则不分大小写,从字符串A中删除
 * @param  @straA: @strB:
 * @retval 函数返回类型说明
 * @date 2024/05/6
 * @version 1.0 :版本
 * @note   补充 注意 说明
 */
char *string(char *strA, char *strB)
{
    char *A = strA;
    char *B = strB;
    char *p = strA;
    // 判断字符串B是否到达末尾

    while (*B)
    {

        // 判断字符串B的当前字符是否属于字母(大写字母 or 小写字母)
        if ((*B < 'A' || *B > 'Z') && (*B < 'a' || *B > 'z'))
        {

            // 如果字符串B的字符不是字母,则向后偏移
            B++;
            continue;
        }
        // 让字符串B中的每个字符都和字符串A中的所有字符进行比较
        while (*A != '\0')
        {
            // 比较字符的ASCII码,注意:不分大小写
            if ((*A == *B) || (*A == *B + 32) || (*A == *B - 32))
            {
                p = A;
                while (*p != '\0')
                {
                    *p = *(p + 1);
                    p++;
                }
                A--;
            }
            *A++;
        }
        A = strA;
        *B++;
    }
    return strA;
}
int main(int argc,
         char const *argv[])
{
    char A[] = "heollo2 world456";
    char B[] = "hl";

    string(A, B);
    printf("%s\n", A);
    return 0;
}

函数验证结果:
image

posted @ 2024-05-06 20:31  Zeratul$$$  阅读(20)  评论(0)    收藏  举报