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

来源:互联网 发布:剑侠情缘2白金版 mac 编辑:程序博客网 时间:2024/05/22 06:57

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


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


0 0
原创粉丝点击