在字符串S1中删除字符串S2中所包含的字符【转】

简介: 转自:http://www.cnblogs.com/tolimit/p/4202959.html /************************************************************************* > File Name: test.

转自:http://www.cnblogs.com/tolimit/p/4202959.html

/*************************************************************************
    > File Name: test.c
    > Author: ToLiMit
    > Mail: 348958453@qq.com 
    > Created Time: Sun 04 Jan 2015 06:20:05 PM PST
 ************************************************************************/

#include<stdio.h>

void delete_str_char (char * main_str, char * sub_str)
{
    if ((main_str == NULL) || (sub_str == NULL))
        return;

    char * sub_index = sub_str;
    char * main_index = main_str;
    char bitmap[32] = {0};
    char * str = (char *)malloc (strlen (str) + 1);
    char * index = str;
    memset (str, 0, strlen (str) + 1);

    while (*sub_index != '\0') {
        char suffix = ((*sub_index) / 8) - 1;
        char offset = (*sub_index) % 8;

        bitmap[suffix] |= (0x1 << (8 - offset));
        sub_index++;
    }

    while (*main_index != '\0') {
        char suffix = ((*main_index) / 8) - 1;
        char offset = (*main_index) % 8;

        if ((bitmap[suffix] & (0x1 << (8 - offset))) == 0) {
            *index = *main_index;
            index++;
        }
        main_index++;
    }

    *index = '\0';
    memcpy (main_str, str, strlen (str) + 1);
    free (str);
    return;
}

int main (int argc, char * argv[])
{
    char test[] = "aabcdaaaaabcaacb";

    delete_str_char (test, "bcd");
    printf ("%s\n", test);
    return 0;
}

 

【作者】 张昺华
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【facebook】 张昺华 zhangbinghua
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
目录
相关文章
|
前端开发 容器
前端页面布局之【Grid布局】详解
前端页面布局之【Grid布局】详解
1058 0
|
Oracle 关系型数据库 数据库
|
网络协议 安全 物联网
探索未来网络:IPv6的演进与应用
本文深入探讨了互联网协议第6版(IPv6)的发展历程、技术特点以及在各领域的应用前景。通过对IPv4面临的问题进行分析,阐明了IPv6出现的必要性及其在地址空间扩展、安全性提升和自动配置等方面的显著优势。结合当前技术趋势和应用案例,展望了IPv6在未来网络中的发展潜力,为相关领域的研究和实践提供了参考。
|
存储 数据安全/隐私保护
基于51单片机的6位密码锁设计
该文档描述了一个基于AT89C52单片机的多功能电子密码锁系统设计,具备6位密码设置与修改功能,输入错误三次会锁定,并在LCD屏上以*号隐藏真实密码。系统包括矩阵键盘、LCD显示、AT24C02存储及报警系统,当密码错误时,会有蜂鸣器报警和LED灯闪烁。此外,还提供了密码重置(通过管理员密码131420)和输入错误提示。文中附有Proteus仿真及原理图,展示了开锁、重设密码和错误输入时的响应。
450 0
|
11月前
|
人工智能 安全 测试技术
探索AI在软件开发中的应用:提升开发效率与质量
【10月更文挑战第31天】在快速发展的科技时代,人工智能(AI)已成为软件开发领域的重要组成部分。本文探讨了AI在代码生成、缺陷预测、自动化测试、性能优化和CI/CD中的应用,以及这些应用如何提升开发效率和产品质量。同时,文章也讨论了数据隐私、模型可解释性和技术更新等挑战。
|
Python
【Python】已解决:AttributeError: module ‘sys’ has no attribute ‘setdefaultencoding’
【Python】已解决:AttributeError: module ‘sys’ has no attribute ‘setdefaultencoding’
570 0
|
10月前
|
Java 编译器 数据库
Java 中的注解(Annotations):代码中的 “元数据” 魔法
Java注解是代码中的“元数据”标签,不直接参与业务逻辑,但在编译或运行时提供重要信息。本文介绍了注解的基础语法、内置注解的应用场景,以及如何自定义注解和结合AOP技术实现方法执行日志记录,展示了注解在提升代码质量、简化开发流程和增强程序功能方面的强大作用。
371 5
|
消息中间件 中间件 关系型数据库
常用的分布式事务解决方案(四)
常用的分布式事务解决方案(四)
|
编解码 算法 计算机视觉
使用NumPy进行傅里叶变换:基础概念与实践应用
使用NumPy进行傅里叶变换:基础概念与实践应用
218 1
|
消息中间件 Java RocketMQ
微服务架构师的福音:深度解析Spring Cloud RocketMQ,打造高可靠消息驱动系统的不二之选!
【8月更文挑战第29天】Spring Cloud RocketMQ结合了Spring Cloud生态与RocketMQ消息中间件的优势,简化了RocketMQ在微服务中的集成,使开发者能更专注业务逻辑。通过配置依赖和连接信息,可轻松搭建消息生产和消费流程,支持消息过滤、转换及分布式事务等功能,确保微服务间解耦的同时,提升了系统的稳定性和效率。掌握其应用,有助于构建复杂分布式系统。
311 0