删除字符串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所指向的对象中.如果复制过程中遇到 ...
随机推荐
- #交互#CF1375F Integer Game
题目 有三堆石子初始石子数分别为\(a,b,c\),可以选择先手还是后手操作, 每次操作形如先手选择一个正整数 \(k\) ,后手自由选择一堆石子加上 \(k\) , 但是不能和上一次操作选择的石堆相 ...
- #圆方树,树链剖分#P4334 [COI2007] Policija
题目 分析 先建一棵圆方树,必经点\(z\)就是满足\(z\)在\(x\)和\(y\)之间的路径上, 这个直接用树链剖分做,必经边必须要满足不在环上, 那么这个必经边就可以找到一个方点,就可以转换成必 ...
- C# 布尔值和条件语句:入门指南和实用示例
C# 布尔值 在编程中,通常需要一个只能有两个值之一的数据类型,比如: 是 / 否 开 / 关 真 / 假 为此,C# 有一个 bool 数据类型,可以取 true 或 false 的值. 布尔值 使 ...
- C++ 模板和泛型编程详解
C++中的模板和泛型编程是非常重要的概念.模板是一种将数据类型作为参数的通用程序设计方法.它们允许开发人员编写可以处理各种数据类型的代码,而无需为每种数据类型编写不同的代码.下面介绍了一些关于C++中 ...
- Matplotlib绘图设置---文字和标签
文字和文字位置 通过plt.text()或ax.text()命令可在图形上添加文字. Signature: ax.text(x, y, s, fontdict=None, withdash=<d ...
- 元启发式算法库 MEALPY 初体验-遗传算法为例
简介 官网: MealPY官网 开源许可: (GPL) V3 MEALPY简介 官网简介翻译 MEALPY (MEta-heuristic ALgorithms in PYthon) 是一个提供最新自 ...
- python性能测试,请求QPS测试
QPS = (1000ms/平均响应时间ms)*服务并行数量 #!/user/bin/env python #coding=utf-8 import requests import datetime ...
- 力扣61(java&python)-旋转链表(中等)
题目: 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置. 示例1: 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 示例2: 输 ...
- 暑期集训 Day11 —— 模拟赛复盘
${\color{Green} \mathrm{Problem\ 1 :Subarray }} $ 签到失败... 直接二进制分组,找出所有二进制位=0 的方法. 死因: 二进制分组没想出来... $ ...
- MyBatis源码之前言—JDBC编码存在的问题和Mybatis的介绍
MyBatis源码之前言-JDBC编码存在的问题和Mybatis的介绍 为了方便操作,我们在sjdwz_test数据库下建立一张表: CREATE TABLE `t_student` ( `id` b ...