字符串操作中,必须掌握的一些之前已经在文章有写过了,比如说字符串查找,字符串粘帖,字符串拷贝等等,这些在标准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>
运行结果:
上述实现的接口,我只测试了其中的三个,剩下的基本上都是雷同,只是用不同的方法去实现罢了。