字符串操作中,必須掌握的一些之前已經在文章有寫過了,比如說字符串查找,字符串粘帖,字符串拷貝等等,這些在標准C庫的string.c中已經有實現,故包含#include
除了上述所說的接口,還有一些在工作中常用的接口,比如:從字符串中刪除指定的字符,刪除字符串的第一個字符,將字符串左右翻轉等等,今天就挑幾個這樣的接口來說一下:
我們直接上代碼:
#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]<'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; }
上述實現的接口,我只測試了其中的三個,剩下的基本上都是雷同,只是用不同的方法去實現罷了。