因为痛,所以叫青春

我有一个梦想:穷屌丝变身富屌丝
字符串处理函数大全

做题的时候越来越感觉到c语言的库函数的强大性,看别人的代码,总是觉得很经典,看来以后自己贴代码的时候一定要将代码优化以后才能贴出来,要不然就显得很损了

View Code
//强悍的字符串库函数哇,太方便了
#include<stdio.h>
#include<string.h>
#include<ctype.h>
char st1[100], st2[100], st[100]
//就下面这一个简单的小程序,就直接把一句很长的字符串分割成一个个的单词了,很棒,很实用哦
int main()
{
    gets(st);
    //strtok,包含在string.h中的库函数
    char *p = strtok(st," ");
    puts(p);
    while((p = strtok(NULL," ")) != NULL)
    puts(p);
    return 0;
}
//查找子串的函数
int ...()
{
    //查找字符
    ①strchr        
    原型:extern char *strchr(char *s,char c);       
    用法:#include <string.h>  
    功能:查找字符串s中首次出现字符c的位置 
    说明:返回首次出现c的位置的指针,如果s中不存在c则返回NULL。
    //②查找字符串s2,中的所有字符,在s1中最先出现的那个字符
    原型:extern int strcspn(char *s1,char *s2);       
    用法:#include <string.h> 
    功能:在字符串s1中搜寻s2中所出现的字符。
    说明:返回第一个出现的字符在s1中的下标值,亦即在s1中出现而s2中没有出现的子串的长度。
    举例:
      
      #include <stdio.h>
      #include <string.h>
      main()
      {
        char *s="Golden Global View";
        char *r="new";
        int n;
        n=strcspn(s,r);
        printf("The first char both in s1 and s2 is: %c",s[n]);
        return 0;
      }
    //查找字串
    ③strstr
    原型:extern char *strstr(char *haystack, char *needle);       
    用法:#include <string.h>
    功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。
    说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。
}
//字符串比较函数
int ...()
{
    //区分大小写比较两个字符串
    原型:extern int strcmp(char *s1,char * s2);       
    用法:#include <string.h>
    功能:比较字符串s1和s2。  
    说明:
        当s1<s2时,返回值<0
        当s1=s2时,返回值=0
        当s1>s2时,返回值>0
    //不区分大小写比较字符串
    ①strcmpi        
    原型:extern int strnicmp(char *s1,char * s2,int n);        
    用法:#include <string.h>  
    功能:比较字符串s1和s2的前n个字符但不区分大小写。
    说明:strncmpi是到strnicmp的宏定义
        当s1<s2时,返回值<0
        当s1=s2时,返回值=0
        当s1>s2时,返回值>0
    ②stricmp    
    原型:extern int stricmp(char *s1,char * s2);      
    用法:#include <string.h>
    功能:比较字符串s1和s2,但不区分字母的大小写。
    说明:strcmpi是到stricmp的宏定义,实际未提供此函数。
        当s1<s2时,返回值<0
        当s1=s2时,返回值=0
        当s1>s2时,返回值>0
    //比较两个字符串的部分字符
    ①strncmp
    原型:extern int strcmp(char *s1,char * s2,int n);        
    用法:#include <string.h> 
    功能:比较字符串s1和s2的前n个字符。 
    说明:
        当s1<s2时,返回值<0
        当s1=s2时,返回值=0
        当s1>s2时,返回值>0
    //另外的stricmp以及strcmpi的用法类似strcmp
    strcasecmp(st1,st2);//同为不区分大小写比较两个字符串的函数,不过这个使用在code blocks编辑器上,在vc上是不能被识别的,uva上面也是要调用这个函数的,不然会出现编辑错误
}
    //字符串的复制
int ...()
{
    ①strcpy
    原型:extern char *strcpy(char *dest,char *src);      
    用法:#include <string.h>
    功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
        返回指向dest的指针。
    ②strncpy
    原型:extern char *strncpy(char *dest, char *src, int n);      
    用法:#include <string.h> 
    功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。
    说明:
        如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。
        如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。
        src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
        返回指向dest的指针。
    //很方便的复制字符串到另一个字符串当中参照线面函数
      #include<stdio.h>      
      #include <string.h>
      main()
      {
        char *s="Golden Global View";
        char *d;       
        d=strdup(s);
        printf("%s\n",d);
        return 0;
      }
    //这样就很简单的把字符串*s的字符复制到另一个地址里,这个地址的头指针就是d
}
//字符串的连接函数
int ...()
{
    ①strcat
    原型:extern char *strcat(char *dest,char *src);        
    用法:#include <string.h> 
    功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
        返回指向dest的指针。
    ②strncat
    原型:extern char *strncat(char *dest,char *src,int n);        
    用法:#include <string.h>
    功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
    说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
        返回指向dest的指针。
}

posted on 2012-07-23 17:51  Nice!  阅读(321)  评论(0编辑  收藏  举报