字符串操作中,必须掌握的一些之前已经在文章有写过了,比如说字符串查找,字符串粘帖,字符串拷贝等等,这些在标准C库的string.c中已经有实现,故包含#include <string.h>就可以使用了。

除了上述所说的接口,还有一些在工作中常用的接口,比如:从字符串中删除指定的字符,删除字符串的第一个字符,将字符串左右翻转等等,今天就挑几个这样的接口来说一下:

我们直接上代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define uchar unsigned char
#define uint  unsigned int 

//删除字符串中所有的数字
void del_str_Num(char* str)
{
	static int i , j;
	while(str[i]!='\0')
	{
		if(str[i]>'9'||str[i]<'0')
			str[j++]=str[i];
		i++;
	}
	str[j]='\0';
}
//删除字符串中的第一个字符
static char* ltrim(char *s, char c)
{
  while(*s!=0&&*s==c)
  		s++;
  return s;
}

//查找并删除字符串中指定的任意字符
static char *delstr_c(char s[100] , char c)
{
	char *p , *q ;
	for(p = s , q = s ; *p != '\0' ; p++)
		if(*p != c)*q++ = *p ;
	*q = *p ;
	return s ;
}

/*将字符串s中出现的字符c删除*/
void del_str_c(char s[],int c)
{
    int i,j;
    for (i = 0, j = 0; s[i] != '\0'; i++)
    {
        if (s[i] != c)
        {
            s[j++] = s[i];
        }
    }
    s[j] = '\0';
}
//查找字符串中的字符并将对应的字符删除
char *strdel_c(char *s,char c)
{
  char *p=s,*q=s;
  for(;*p;p++)
  {
    if(*p != c )
	{
       if(q == p)
       	  q++ ;
       else
       	  *q++ = *p ;
	}
  }
  *q = '\0';
  return s;
}
//将字符串左右翻转
char* strfilp(char* str)
{
    //h指向str的头部
    char* h = str;
    char* t = str;
    char ch;  

    //t指向s的尾部
    while(*t++) ;
    t--;    //与t++抵消
    t--;    //回跳过结束符'\0'

    //当h和t未重合时,交换它们所指向的字符
    while(h < t)
    {
        ch = *h;
        *h++ = *t;   //首尾移动
        *t-- = ch;
    }  

    return(str);
}  

int main()
{
	char str[20] = "23.3hhlo965" ;
	char *str1 = "hello";
	del_str_c(str , '.');  //删除该字符串中的.
	printf("%s\n",str);
	del_str_Num(str);      //删除该字符串中的所有数字
	printf("%s\n",str);
	strfilp(str);          //将字符串左右翻转
	printf("%s\n",str);

	return 0;
}</span>

运行结果:



上述实现的接口,我只测试了其中的三个,剩下的基本上都是雷同,只是用不同的方法去实现罢了。

C语言字符串的常见特殊操作(除了string.c实现的那些接口)的更多相关文章

  1. C语言字符串拷贝

    C语言字符串拷贝利用指针操作,要清楚知道指针的指向 代码如下: #include <stdio.h> #include <assert.h> #include <stri ...

  2. Go 语言字符串常见操作

    @ 目录 1. 字节数组 2. 头尾处理 3. 位置索引 4. 替换 5. 统计次数 6. 重复 7. 大小写 8. 去除字符 9. 字符串切片处理 10. 数值处理 1. 字节数组 字节与字符的区别 ...

  3. C语言字符串操作总结大全(超详细)

    本篇文章是对C语言字符串操作进行了详细的总结分析,需要的朋友参考下 1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat( ...

  4. C语言字符串操作常用库函数

    C语言字符串操作常用库函数 *********************************************************************************** 函数 ...

  5. c语言字符串操作大全

     C语言字符串操作函数 函数名: strcpy 功  能: 拷贝一个字符串到另一个 用  法: char *stpcpy(char *destin, char *source); 程序例: #incl ...

  6. 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...

  7. GO语言的进阶之路-Golang字符串处理以及文件操作

    GO语言的进阶之路-Golang字符串处理以及文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们都知道Golang是一门强类型的语言,相比Python在处理一些并发问题也 ...

  8. C语言字符串的操作

    C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen5. 字符串连接 - strcat6. ...

  9. C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...

随机推荐

  1. Swift中如何转换不同类型的Mutable指针

    在Swift中我们拥有强大高级逻辑抽象能力的同时,低级底层操作被刻意的限制了.但是有些情况下我们仍然想做一些在C语言中的hack工作,下面本猫就带大家看一看如何做这样的事. hacking is ha ...

  2. tomcat生命周期的管理——生命周期统一接口Lifecycle

    我们知道Tomcat的架构设计是清晰的.模块化的,其拥有很多组件,假如我们要启动Tomcat,可以一个一个启动组件,但这样启动有很多缺点,不仅麻烦,而且容易漏了组件启动,还会对后面动态组件扩展带来麻烦 ...

  3. Android逆向工程

    在Root前提下,我们可以使用Hooker方式绑定so库,通过逆向方式篡改数值,从而达到所谓破解目的.然而,目前无论是软件加固方式,或是数据处理能力后台化,还是客户端数据真实性验证,都有了一定积累和发 ...

  4. 关于Android PullTorefreshScrollview回到顶部实例

    列表滑动下面显示按钮,点击按钮回到顶部的功能,一般scrollview会有滑动监听的事件,通过setOnScrollChangeListener()滑动监听滑动的距离来判断是否显示按钮就好了,但是Pu ...

  5. 【一天一道Leetcode】#190.Reverse Bits

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 我的个人博客已创建,欢迎大家持续关注! 一天一道le ...

  6. openfire环境搭建

    1.下载源代码:http://www.igniterealtime.org/downloads/source.jsp 2.把源代码解压出的openfire_src文件夹放至eclipse workpl ...

  7. .so的封装调用

    .so的创建和调用有一个特点,我们要知道.so的调用并不一定必须在Activity中进行,那么制作时也并不一定要在Activity中,但是,一旦.so制作成功,那么再调用时,调用的java类就必须跟制 ...

  8. 【安卓中的缓存策略系列】安卓缓存策略之综合应用ImageLoader实现照片墙的效果

    在前面的[安卓缓存策略系列]安卓缓存之内存缓存LruCache和[安卓缓存策略系列]安卓缓存策略之磁盘缓存DiskLruCache这两篇博客中已经将安卓中的缓存策略的理论知识进行过详细讲解,还没看过这 ...

  9. Android开发学习之路--网络编程之xml、json

    一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...

  10. 错误 frm-40654 记录已经被另一个用户更新,重新查询以查看修改

     导致这问题的原因有多个,有些是最近在项目上发现不同于网上其他人遇到的 网上一般来说大家都说有如下几个原因.但是在项目上做返利时 对AP invoice 的有做更改,导致更改或插入的数据在界面上修 ...