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