源码实现 --> strdel
删除字符串中某个字符strdel
函数
char *strDel(char* str,const char chToDel)
不是库里面的函数,自己实现的原型,删除str中所有的chToDel字符。
源码
//基本思想是:通过pRefStr2遍历str,找出不等于chToDel的值,将其赋值与pRefStr2
char *strDel(char* str,char chToDel)
{ assert((str!=NULL)&& (chToDel!=NULL));
char *pRefStr1, *pRefStr2;
pRefStr1=pRefStr2=str;//将两个指针变量同时指向str,后续改变指针变量的值相当于改变str的值 while(*pRefStr2++){
if(*pRefStr2!=chToDel)
{
*pRefStr1++=*pRefStr2;//找到不等于chToDel的值,并将其赋值与pRefStr1,再将pRefStr1的指针向后移动;
}
}
*pRefStr1='\0';
return str;
}
关键点: 注意C语言程序的顺序执行,以及指针。
测试
#include<iostream.h>
#include<assert.h>
void main()
{
char destStr[]="aadddfcca";
char delStr='a';
strDel(destStr,delStr);
cout<<destStr<<endl;
}
输出结果:
dddfcc
源码实现 --> strdel的更多相关文章
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
		本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ... 
- C# ini文件操作【源码下载】
		介绍C#如何对ini文件进行读写操作,C#可以通过调用[kernel32.dll]文件中的 WritePrivateProfileString()和GetPrivateProfileString()函 ... 
- 【原】FMDB源码阅读(三)
		[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ... 
- 从源码看Azkaban作业流下发过程
		上一篇零散地罗列了看源码时记录的一些类的信息,这篇完整介绍一个作业流在Azkaban中的执行过程,希望可以帮助刚刚接手Azkaban相关工作的开发.测试. 一.Azkaban简介 Azkaban作为开 ... 
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
		[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ... 
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
		上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ... 
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
		前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ... 
- SDWebImage源码解读之SDWebImageDownloaderOperation
		第七篇 前言 本篇文章主要讲解下载操作的相关知识,SDWebImageDownloaderOperation的主要任务是把一张图片从服务器下载到内存中.下载数据并不难,如何对下载这一系列的任务进行设计 ... 
- 【深入浅出jQuery】源码浅析--整体架构
		最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ... 
随机推荐
- Hi3515支持NFS-ROOT启动
			目前在做Hi3515平台监控项目,前期开发一直使用SDK里推荐的mount nfs方式来调试代码,虽然也算方便,但是我一直觉得用法NFS-ROOT才是最省事的方法,而且最接近最终用户使用环境,因为如果 ... 
- linux shell中获取mongodb最大连接数、内存使用情况等
			前两天接到了一个新的需求,需要在linux shell脚本中监控到mongodb最大连接数.内存使用情况等. 但是我对于linux shel很不了解,只是会一些简单常用的linux的操作而已,只要一顿 ... 
- 《实战Nginx》读书笔记--Nginx配置文件
			先看下一份的Nginx 的配置 #user nobody nobody;#使用的用户和组 worker_processes 4;#工作进程的个数,一般等于CPU核数或者总核数的两倍 #error_lo ... 
- Flex设置LinkButton的背景色
			1.设计思路 由于Flex中没有设置LinkButton的背景色的属性,现在得从两个方面入手:第一,直接通过调用样式方法画出LinkButton的背景色:第二,设置LinkButton的背景图片 ... 
- SQL游标使用及实例
			declare my_cursor cursor scroll dynamic for select * from t_msg open my_cursor declare @name sysname ... 
- hibernate学习(三) hibernate中的对象状态
			hibernate对象的状态分为三种: 游离状态,持久化状态,瞬时状态 下面一行代码区分: Configuration cfg=new Configuration().configure(); ... 
- class-支持向量机SVM全析笔记
			support vector machines,SVM是二类分类模型.定义在特征空间上间隔最大的线性分类器,由于包括核技巧实质上成为非线性分类器.学习策略是间隔最大化,可形式化为求解凸二次规划问题(c ... 
- QOpenGLTexture 两个纹理叠加
			如何做纹理混合? 方法是,定义多个QOpenGLTexture,然后在fragment shader中添加相应的变量,然后把texture bind到对应的uniform变量上. 废话不多说 text ... 
- C# 中 realdonly不等于只读
			Realdonly很多同学从字面理解.认为通过realdonly修饰的关键字是只读的,其实,并不完全是这样. 如int.string.bool等基本数据类型一旦赋值后,确实就不可以更改了. 但是如果是 ... 
- 觉得OpenStack的网络复杂?其实你家里就有同样一个网络
			当你想了解OpenStack的Neutron网络,打开下面这张图的时候,心里一定是崩溃的,看起来这些模块连在一起很复杂,但其实和你家里的网络很像,看不出来?看我来慢慢解析. 其实这个网络的样子更像是我 ... 
