/**
* file name:DelDestChar.c
* author : liaojx2016@126.com
* date : 2024-05-06
* function : Delete string A alike to string B's charactor
* note : None
* CopyRight (c) 2024 liaojx2016@126.com Right Reseverd
*
**/
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
/**
*
* func name : func
* function : Delete string A alike to string B's charactor
* parameter :
* @strA :Address pointed to string A
* @strA :Address pointed to string B
* Return val : Address pointed to modified string A
* note : None
* author : liaojx2016@126.com
* date : 2024-05-06
* version : V1.0
* modify history : None
*
**/
char* func(const char*strA , const char *strB)
{
char *str = ( char* )malloc( strlen(strA) );//用于存放strA删除后的字符串
if(str == NULL)
{
perror("malloc failed\n");
exit(-1);
}
str=strcpy( str,strA );
//printf("str =%s\n",str);
int i=0;//str的下标
char *p;//备份每次循环改变后的str字符串 //判断字符串B是否到达末尾
while (*strB)
{
//printf("*strB=%c\n",*strB);
//判断字符串B的当前字符是否属于字母(大写字母 or 小写字母)
if ( (*strB < 'A' || *strB > 'Z') && (*strB < 'a' || *strB > 'z') )
{
//如果字符串B的字符不是字母,则向后偏移
strB++;
continue;
}
i=0;
p=str;
//判断字符串p是否到达末尾
while(*p)
{
//判断当前字符属于字母范围且大小写与字符串B当前的字符大小写相等
if ( ( (*p > 'A' && *p < 'Z') || (*p > 'a' || *p < 'z') ) && (*p==*strB ||*p==*strB+32 ||*p==*strB-32 ))
{
//若成立,则不赋值,直接地址偏移
p++;
}
else
{
//若不成立,直接赋值
str[i++]=*p++;
}
//printf("i=%d\n",i);
//printf("str=%s\n",str);
}
//此时字符串A中与字符串B的当前字符大小写相同的字符已删除
str[i]='\0'; //将str的字符串加上结束标志、0
//printf("***str=%s\n",str);
strB ++;
}
return str;
} int main(int argc, char const *argv[])
{
char*strA="Hello world";
char*strB="Loh";
printf("strA =%s\n",strA);
printf("strB =%s\n",strB);
char *str=func(strA,strB); printf("str=%s\n",str); return 0;
}

测试输出结果:

删除字符串A中与字符串B相同的字符的更多相关文章

  1. 字符串--java中判断字符串是否为数字的方法的几种方法?

    ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...

  2. c# 数组 字符串 C#中判断字符串中包含某个字符

    string str = "1,2,3,4,5,6,7";            string[] strArray = str.Split(','); //字符串转数组      ...

  3. C语言计算字符串数组中每个字符串出现的个数

    unsigned int str_num(char *str[], int num[], int len) { int i, j; int count; int flag[len]; ; i < ...

  4. 7.Java中的字符串

    1.String的特性 特性一:不可变性 String s=new String("yangyun") s=s.toUpperCase(); 这里的s,s占用的空间是不一样的(地址 ...

  5. Java OOP中的字符串篇

    字符串的三大特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String.St ...

  6. BAT批处理中的字符串处理详解(字符串截取)

    BAT批处理中的字符串处理详解(字符串截取)   BAT批处理中的字符串处理详解(字符串截取 批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集.批处理中可实现的字符串处理 ...

  7. 【转】BAT批处理中的字符串处理详解(字符串截取)

    下面对这些功能一一进行讲解. 1.截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符.举例说明其基本功能: @echo off set ...

  8. shell 从变量中切割字符串

    1. 在shell变量中切割字符串 shell中截取字符串的方法有很多中,${expression}一共有9种使用方法.${parameter:-word}${parameter:=word}${pa ...

  9. Python中的字符串与字符编码

    本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章. ...

  10. c/c++中与字符串处理相关的函数

    void *memccpy (void *dest, const void *src, int c, size_t n); 从src所指向的对象复制n个字符到dest所指向的对象中.如果复制过程中遇到 ...

随机推荐

  1. #深搜,期望#CF105B Dark Assembly

    洛谷题目传送门 CODEFORCES传送门 分析 题目强调贿赂要在投票开始前完成说明分糖和成功率可以分开计算 那么分糖考虑直接暴搜,由于题目并没有说糖必须全部分完, 所以每一次分完一颗糖后均要求当前状 ...

  2. 【开源三方库】crypto-js加密算法库的使用方法

     OpenAtom OpenHarmony(简称"OpenHarmony")三方库,是经过验证可在OpenHarmony系统上可重复使用的软件组件,可帮助开发者快速开发OpenHa ...

  3. C# 窗口停靠隐藏类

    引用:https://www.cnblogs.com/lidj/archive/2012/07/06/2579923.html 最近修改了一下.可以更方便的用在各个窗体上了 代码也简洁很多.直接引用一 ...

  4. Linux编译静态库、动态库

    一.Linux上编译静态库 # 1.编译成.o文件 gcc -c a.c b.c // 2.编译成静态库 ar -r liba.a a.o b.o // 3.链接成可执行文件 gcc main.c - ...

  5. java switch 自定义表格的渲染和编辑示例

    目录 正常使用表格 自定义表格样式 正常使用表格 很简单,使用一次就知道了,不过多介绍. // 创建 JTable 实例,使用默认的模型 JTable table = new JTable(); // ...

  6. 实时 3D 深度多摄像头跟踪 Real-time 3D Deep Multi-Camera Tracking

    实时 3D 深度多摄像头跟踪 Real-time 3D Deep Multi-Camera Tracking 论文url https://arxiv.org/abs/2003.11753 论文简述: ...

  7. redis 简单整理——redis 的哈希基本结构和命令[三]

    前言 简单介绍一下哈希基本结构和命令. 正文 什么是hash呢? hash也可以叫做字典.关联数组. 哈希类型是键本身又是一个键值对结构: value={{field1,value1},...{fie ...

  8. singalr 可以连接但是无法发送消息

    前言 在一次测试singalr的过程中,发现一个问题,那就是连接成功了,但是发送消息没有响应. 原因及解决 如何可以连接但是发不了消息,net的锅,需要4.0以上,所以我们发布iis的时候也应该选择4 ...

  9. 基于Material Design风格开源、易用、强大的WPF UI控件库

    前言 今天大姚给大家分享一款基于Material Design风格开源.免费(MIT License).易于使用.强大的WPF UI控件库:MaterialDesignInXamlToolkit. 项 ...

  10. Java集成系列:高效构建自定义插件

    前言 随着软件开发的快速发展和需求的不断增长,开发人员面临着更多的压力和挑战.传统的开发方法需要花费大量的时间和精力,而低代码开发平台的出现为开发人员提供了一种更加高效.快速的开发方式.今天小编就以构 ...