字符串操作中,必须掌握的一些之前已经在文章有写过了,比如说字符串查找,字符串粘帖,字符串拷贝等等,这些在标准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>

运行结果:



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

最新文章

  1. Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解
  2. iOS 手势识别器(UIGestureRecognizer)
  3. MySQL问题记录--Can&#39;t connect to MySQL server on localhost (10061)解决方法
  4. SVN-Server搭建及配置
  5. iOS Block详细介绍(block实现)
  6. kafka basic commands
  7. 深入理解Redis:命令处理流程
  8. MVC3 ModelBinder
  9. Python成长之路第一篇(3)_初识字典
  10. 让上下两个DIV块之间有一定距离或没有距离
  11. Android Root原理初探
  12. ORACLE中修改表的Schema的总结
  13. RTSP协议分析
  14. 【jQuery】(1)---初次接触Jquery
  15. pytorch打印模型结构图
  16. Codevs1541[USACO]围墙涂色
  17. Codeforces Round #500 (Div. 2) [based on EJOI]
  18. iis子站点
  19. kali拿取路由器pin码
  20. Chrome使用的plugin

热门文章

  1. 让sublime总是在新选项卡打开新文件
  2. hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)
  3. Android必知必会-发布开源 Android 项目注意事项
  4. Android自定义View(三、深入解析控件测量onMeasure)
  5. 手把手图文并茂教你用Android Studio编译FFmpeg库并移植
  6. Dynamics CRM2015 on-premises直接升级Dynamics CRM2016 on-premises
  7. velocity中加载模板文件的方式
  8. Swift基础之Animation动画研究
  9. 【安卓中的缓存策略系列】安卓缓存策略之综合应用ImageLoader实现照片墙的效果
  10. SDL2源代码分析1:初始化(SDL_Init())