c语言有哪些特殊的字符串,C语言字符串的常见特殊操作(除了string.c实现的那些接口)...

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

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

laugh.gif

我们直接上代码:

#include

#include

#include

#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]

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;

}

运行结果:

bf378933d1d6a77f49948f9d76026bdc.png

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

本文同步分享在 博客“Engineer-Bruce_Yang”(优快云)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值