看到很多地方都面试或者考试都要涉及字符串的很多知识 有的需要自己写字符串 最近看书的收集了一些 算是摘抄 然后在其中加了点我自己的感受 嘿嘿
strcpy 函数 ,作用是将一个字符串的字符复制到另一个字符串中
char * strcpy(char *destination ,const char * source)
{
  while(*destination++=*source++);//看这一句话写的,精炼间断而又让人一目了然
  //我用while写肯定是要三条语句,循环变量,赋值,递增,唉。。。这就是菜鸟啊
  return(destination-1);
}
strcat函数,作用是将一个串的内容追加到另一个串上
char *strcat(char *target,const char * source)
{
  char *original=target;
  while(*target)//这里可以看出指针和数组下标的不同,一直都觉得指针式很有优势的
  target++;
  while(*target++=*source++);
  return(original);//注意到与上面一个函数返回的不同
}
strncat函数,这个不常用,作用是给字符串追加了N个字符
char *strcat(char *destination ,const char * sourceint n)
{
  char *original=destination;
  int i=0;
  while(*destination )
  destination ++;
  while((i++<n)&&(*destination ++=*source++));//我忍不住再一次赞叹一下这个循环语句
  //这个容错性的想到也很牛,只要n为负数,就将目标字符串改为空
  if(i>n)
    *destination=NULL;
  return(original);
}
strlwr strupr函数 这两个函数实现起来比较简单,就不列了 :)
str_index函数 作用是返回索引到串的首次出现
int str_index(const char*string, char letter)
{
  char *original=string;
  while((*string!=letter)&&(*string))
        string++;
  return(string-original);//这个返回方法,没有一定功力估计很难想出来,至少脑子里不会首先会想到这样写
}
strrchr函数 也是不常用的函数 作用是搜索字符在字符串中的末次出现
char *strrchr(const char *string, char letter)
{
      char *ptr=NULL;
      while(*string)//这个逻辑在很多地方都有用
      {
          if(*string==letter)
                ptr=string;
                string++;
    }
    return (ptr);
}
strchr函数 作用是获取字符串中第一次出现某个字符
char *strchr(const char *string, char letter)
{
      while((*string!=letter)&&(*string))
                string++;
    return (string);
}
strr_index函数 作用是返回指向字符串末次出现的索引
int strr_index(const char *string,char letter)
{
    char *original=string;
    char *ptr=NULL;
    while(*string)
    {
        if(*string==letter)
            ptr=string;
            string++
    }
    return((*ptr)?ptr-original:string-original);//要么返回末次出现的索引,要么返回字符串的长度
}
charcnt函数 作用是计算字符串中字符出现的次数
int charcnt(const char *string,char letter)
{
    int count=0;
    while(*string)
        if(*string==letter)
            count++;
        return(count);
}
strrev函数 作用是将字符串内容反转
char *strrev(char *string)
{
    char *original=string;
    char *forward=string;
    char tmp;
    while(*string)
        string++;
    while(forward<string)//逻辑和交换两个数差不多
    {
          temp=*(--string);
          *string=*forward;
          *forward++=tmp;
    }
    return(original);
}
strset函数 作用是将某特定字符赋给字符串 相当于用某一个字符重置字符串 不是很难的函数 :)
strcmp函数 作用是比较两个字符串 相同返回0,第一个大返回-1 ,第二个大返回1
int strcmp(const char *s1, const char *s2)
{
    while((*s1==*s2)&&(*s1))//这个比较的方式很简练吧,也很有逻辑
    {
          s1++;
          s2++;
    }
    if((*s1==*s2)&&(!*s1))
        return(0);
    else if((*s1)&&(!*s2))
        return(-1);
    else if((!*s1)&&(*s2))
        return(1);
    else
        return((*s1>*s2)?-1:1);
}
strncmp函数 作用是比较两个字符串的前N个字符 实现和上面的函数很类似 只是要添加一个控制变量控制下长度 : )
strdup函数  作用是复制字符串的内容
strdup(const char *s1)
{
    char *ptr;
    if((ptr=malloc(strlen(s1)+1)))
          strcpy(ptr,s1);
    return(ptr);
}
strspn函数 作用是从给定字符序列中查字符的首次出现
size_t strspnconst char *s1, const char *s2)//这个函数我看了很久才明白是什么意思,比如第一个参数传abcDef,第二个传cbA,                                                                  //按照顺序查第一个字符串,可以到第一个没有在第二个字符串中出现的字符是'D'
                                                                //返回这个字符在第一个字符串中的索引,也就是3,另外,为什么不用int而用size_t
                                                                //返回值,是因为site_tunsigned int,也就是正数
{
    int i,j;
    for(i=0;*s1;i++,s1++)
    {
          for(j=0; s2[j]; j++)
              if(*s1==s2[j])
                    break;
          if(s2[j]==NULL)
              break;
    }
    return(i);
}
strstr函数 作用是在字符串中查子字符串 虽然返回值是char* 但是这个函数应该在判断有没有到子字符串情况下用的多些
char * strstr(const char *s1,const char *s2)
{
        int  i,j,k;
        for(i=0; s1[i]; i++)
            for(j=i,k=0; s1[j]==s2[k]; j++,k++)
                  if(!s2[k+1])
                      return(s1+i)
        return(NULL);
}
strstr_cnt函数 作用是计算字符串出现的次数 实现差不多是strstr cnt的组合 : )
substring_index函数 作用是给子字符串获取索引 只要将strstr的返回值改成i就可以了 : )
r_strstr函数 作用是获取子字符串最右端出现 strstr差不多 然后参照一般的查最右端的函数 : )
strstr_remreturn在c语言中是什么意思函数 作用是从字符串中删除子字符串
char * strstr_rem(char *string, char *substring)//我没有仔细看这个函数,我有点懒,嘿嘿,但是按照上面的strstr在到字符串后进行
                                                                  //进行替换,具体过程没看 列出来 可以学习

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。