浅谈C语言中strcpy,strcmp,strlen,strcat函数原型分享

—-想了解浅谈C语言中strcpy,strcmp,strlen,strcat函数原型分享的全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

实例如下:

  //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'')并添加''  char *strcat(char * strDest, const char *strSrc)  {    char *res=strDest;    assert((strDest!=NULL)&&(strSrc!=NULL));    while(*strDest)strDest++;    while(*strDest=*strSrc)    {      strDest++;      strSrc++;    }    return res;  }  //strcpy(dest,src)把从src地址开始且含有null结束符的字符串复制到以dest开始的地址空间  char *strcpy(char *strDest, const char *strSrc)  {    char *res=strDest;    assert((strDest!=NULL)&&(strSrc!=NULL));    while((*strDest=*strSrc)!='')    {      strDest++;      strSrc++;    }    return res;  }

今天去文思创新面试,考官问了我一个简单的实现,即:自己编写strcpm的实现,IBM曾经也考过写strcpy原型,这几个函数在面试的时候经常被考到,很具有代表性,突然被问起还真有点措手不及呢。现在记下供大家学习和以后温习:(下面的程序经本人通过)

1、Strcat函数原型如下:

  char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数  {      char * address = strDest;       //该语句若放在assert之后,编译出错      assert((strDest != NULL) && (strScr != NULL)); //对源地址和目的地址加非0断言      while(*strDest)       //是while(*strDest!='/0')的简化形式      {            //若使用while(*strDest++),则会出错,因为++是不受循环         strDest++;        //约束的。所以要在循环体内++;因为要是*strDest最后指      }            //向该字符串的结束标志'/0'。      while(*strDest++ = *strScr++)       {         NULL;         //该循环条件内可以用++,      }             //此处可以加语句*strDest='/0';有无必要?  return address;        //为了实现链式操作,将目的地址返回  }    

以下是在VC6.0中调试的例子,函数名用strcata代替。

  #include <stdio.h>  #include <assert.h>  char *strcata(char *strDest,const char *strScr)  {      char * address = strDest;      assert((strDest != NULL) && (strScr != NULL));      while(*strDest)      {         strDest++;      }      while(*strDest++ = *strScr++)      {         NULL;      }      return address;  }    void main()  {      char str1[100]={"i love"};      char str2[50]={"China"};      printf("%s/n",strcata(str1,str2));  }    

2、Strcpy函数原型如下:

  char *strcpy(char *strDest, const char *strScr)  {      char *address=strDest;      assert((strDest != NULL) && (strScr != NULL));      while(*strScr)          //是while(*strScr != '/0')的简化形式;      {         *strDest++ = *strScr++;      }      *strDest = '/0';            //当strScr字符串长度小于原strDest字符串长度      return address;           //时,如果没有改语句,就会出错了。  }

以下是在VC6.0中调试的例子,函数名用strcpya代替。

  #include <stdio.h>  #include <assert.h>  char *strcpya(char *strDest, const char *strScr)  {      char *address = strDest;      assert((strDest != NULL) && (strScr != NULL));      while(*strScr)      {         *strDest++ = *strScr++;      }      *strDest = '/0';      return address;  }    void main()  {      char str1[100]={"i love"};      char str2[50]={"China"};      printf("%s/n",strcpya(str1,str2));  }    

3、Strcmp函数原型如下:

  int strcmp (const char *str1,const char *str2)  {            int len = 0;      assert((str1 != '/0') && (str2 != '/0'));      while(*str1 && *str2 && (*str1 == *str2))      {         str1++;         str2++;      }      return *str1-*str2;  }    

以下是在VC6.0中调试的例子,函数名用strcmpa代替。

  #include <stdio.h>  #include <assert.h>  int strcmpa (const char *str1,const char *str2)  {            int len = 0;      assert((str1 != '/0') && (str2 != '/0'));      while(*str1 && *str2 && (*str1==*str2))      {         str1++;         str2++;      }      return *str1-*str2;  }    void main()  {      char str1[100] = {"i love"};      char str2[50] = {"China "};      printf("%d/n",strcmpa(str1,str2));  }      

4、Strlen函数原型如下:

  int strlen(const char *str)  {    int len = 0;      assert(str != NULL);      while(*str++)      {         len++;      }      return len;  }  

以下是在VC6.0中调试的例子,函数名用strlena代替。

  #include <stdio.h>  #include <assert.h>  int strlena(const char *str)  {    int len = 0;      assert(str != NULL);      while(*str++)      {         len++;      }      return len;  }  void main()  {      char str1[100] = {"i love"};      char str2[50] = {"China "};      printf("%d/n",strlena(str1));  }      

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/487968.html

(0)
上一篇 2020年11月12日
下一篇 2020年11月12日

精彩推荐