删除字符串A中与字符串B相同的字符

/**
* 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相同的字符的更多相关文章
- 字符串--java中判断字符串是否为数字的方法的几种方法?
ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < ...
- c# 数组 字符串 C#中判断字符串中包含某个字符
string str = "1,2,3,4,5,6,7"; string[] strArray = str.Split(','); //字符串转数组 ...
- C语言计算字符串数组中每个字符串出现的个数
unsigned int str_num(char *str[], int num[], int len) { int i, j; int count; int flag[len]; ; i < ...
- 7.Java中的字符串
1.String的特性 特性一:不可变性 String s=new String("yangyun") s=s.toUpperCase(); 这里的s,s占用的空间是不一样的(地址 ...
- Java OOP中的字符串篇
字符串的三大特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String.St ...
- BAT批处理中的字符串处理详解(字符串截取)
BAT批处理中的字符串处理详解(字符串截取) BAT批处理中的字符串处理详解(字符串截取 批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集.批处理中可实现的字符串处理 ...
- 【转】BAT批处理中的字符串处理详解(字符串截取)
下面对这些功能一一进行讲解. 1.截取字符串 截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符.举例说明其基本功能: @echo off set ...
- shell 从变量中切割字符串
1. 在shell变量中切割字符串 shell中截取字符串的方法有很多中,${expression}一共有9种使用方法.${parameter:-word}${parameter:=word}${pa ...
- Python中的字符串与字符编码
本节内容: 前言 相关概念 Python中的默认编码 Python2与Python3中对字符串的支持 字符编码转换 一.前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章. ...
- c/c++中与字符串处理相关的函数
void *memccpy (void *dest, const void *src, int c, size_t n); 从src所指向的对象复制n个字符到dest所指向的对象中.如果复制过程中遇到 ...
随机推荐
- #深搜,期望#CF105B Dark Assembly
洛谷题目传送门 CODEFORCES传送门 分析 题目强调贿赂要在投票开始前完成说明分糖和成功率可以分开计算 那么分糖考虑直接暴搜,由于题目并没有说糖必须全部分完, 所以每一次分完一颗糖后均要求当前状 ...
- 【开源三方库】crypto-js加密算法库的使用方法
OpenAtom OpenHarmony(简称"OpenHarmony")三方库,是经过验证可在OpenHarmony系统上可重复使用的软件组件,可帮助开发者快速开发OpenHa ...
- C# 窗口停靠隐藏类
引用:https://www.cnblogs.com/lidj/archive/2012/07/06/2579923.html 最近修改了一下.可以更方便的用在各个窗体上了 代码也简洁很多.直接引用一 ...
- Linux编译静态库、动态库
一.Linux上编译静态库 # 1.编译成.o文件 gcc -c a.c b.c // 2.编译成静态库 ar -r liba.a a.o b.o // 3.链接成可执行文件 gcc main.c - ...
- java switch 自定义表格的渲染和编辑示例
目录 正常使用表格 自定义表格样式 正常使用表格 很简单,使用一次就知道了,不过多介绍. // 创建 JTable 实例,使用默认的模型 JTable table = new JTable(); // ...
- 实时 3D 深度多摄像头跟踪 Real-time 3D Deep Multi-Camera Tracking
实时 3D 深度多摄像头跟踪 Real-time 3D Deep Multi-Camera Tracking 论文url https://arxiv.org/abs/2003.11753 论文简述: ...
- redis 简单整理——redis 的哈希基本结构和命令[三]
前言 简单介绍一下哈希基本结构和命令. 正文 什么是hash呢? hash也可以叫做字典.关联数组. 哈希类型是键本身又是一个键值对结构: value={{field1,value1},...{fie ...
- singalr 可以连接但是无法发送消息
前言 在一次测试singalr的过程中,发现一个问题,那就是连接成功了,但是发送消息没有响应. 原因及解决 如何可以连接但是发不了消息,net的锅,需要4.0以上,所以我们发布iis的时候也应该选择4 ...
- 基于Material Design风格开源、易用、强大的WPF UI控件库
前言 今天大姚给大家分享一款基于Material Design风格开源.免费(MIT License).易于使用.强大的WPF UI控件库:MaterialDesignInXamlToolkit. 项 ...
- Java集成系列:高效构建自定义插件
前言 随着软件开发的快速发展和需求的不断增长,开发人员面临着更多的压力和挑战.传统的开发方法需要花费大量的时间和精力,而低代码开发平台的出现为开发人员提供了一种更加高效.快速的开发方式.今天小编就以构 ...