C语言字符串函数strcat|strcpy|strlen|strcmp的用法及原型

嵌入式技术

1372人已加入

描述

strcat(str1,str2) 意为将字符串str2连接到字符串str1之后

strcat用法如下

	#include  #include  int main () {    char src[99], dest[99];    strcpy(src,  "This is source");    strcpy(dest, "This is destination");    strcat(dest, src);    printf("最终的目标字符串: %s", dest);    return 0; } 输出结果:This is sourseThis is destinationstrcat函数的原型如下

	char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数 {        char * p = strDest;             //将目的字符串数组赋给p         if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言         return strDest;         while(*p)             //是while(*p!=’�’)的简化形式        {                                      p++;                       }                                while(*strsource!=0)         {               *p=*strScr;      p++;             //依次++以进行连接       strScr++;             }     *p='�';                          //有无必要?        return strDest;               //为了实现链式操作,将目的地址返回 } dev c++调试代码如下

	#include #include char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数 {        char * p = strDest;             //将目的字符串数组赋给p         if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言         return strDest;         while(*p)             //是while(*p!=’�’)的简化形式        {                                      p++;                       }                                while(*strScr!=0)         {               *p=*strScr;      p++;             //依次++以进行连接       strScr++;             }     *p='�';                          //有无必要?        return strDest;               //为了实现链式操作,将目的地址返回 } int main(){  char str1[99]="The";  char str2[99]="One";  printf("%s ",strcat(str1,str2));  return 0; } 输出结果为TheOne 如果怀疑strcat函数本身发挥作用的话可以将调用的函数名称改成strcate之类的 结果也一样哦 来 试试看~strcpy的用法及原型strcpy(str1,str2)是将字符串str2复制到str1中去。其原型char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。关注公众号:C语言中文社区,免费领取300G编程资料strcpy的用法如下

	#include  #include  int main () {   char str1[]="Sample";   char str2[99];   char str3[99];   strcpy (str2,str1);   strcpy (str3,"copy successfully");   printf ("str1: %s str2: %s str3: %s ",str1,str2,str3);   return 0; } 输出结果为 str1:Sample

	str2: Sample str3: copy successfully strcpy的原型在这里

	char *strcpy(char *strDest, const char *strScr) {        char *p=strDest;        if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言         return strDest;         while(*strScr)                   //是while(*strScr != ’�’)的简化形式;        {               *strDest++ = *strScr++;        }        *strDest = '�';       //当strScr字符串长度小于原strDest字符串长度,时,如果没有改语句,                                 //  就会出错了        return strDest;               } dev c++调试过程 strcpy用strcpye代替

	#include  #include  char *strcpye(char *strDest, const char *strScr) {        char *p=strDest;        if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言         return strDest;         while(*strScr)                   //是while(*strScr != ’�’)的简化形式;        {               *strDest++ = *strScr++;        }        *strDest = '�';       //当strScr字符串长度小于原strDest字符串长度,时,如果没有改语句,                                 //  就会出错了        return strDest;               } int main () {   char str1[]="Sample";   char str2[99];   strcpye(str2,str1);   printf ("str1: %s str2: %s ",str1,str2);   return 0; } strcmp用法及原型 strcmp用于比较字符串。int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定:
  • ① str1小于str2,返回负值;
  • ② str1等于str2,返回0;
  • ③ str1大于str2,返回正值;
strcmp函数实际上是对字符的ASCII码进行比较:首先比较两个字符串的第一个字符,若不相等,则停止比较并得出两个ASCII码大小比较的结果;如果相等就接着向后第二个字符,以此类推。无论两个字符串是什么样,strcmp函数最多比较到其中一个字符串遇到结束符'/0'为止,就能得出结果。特别注意:strcmp(const char *str1,const char * str2) 这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。规定返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。当两个字符串不相等时,C 标准没有规定返回值会是 1 或 -1,只规定了正数和负数。有些会把两个字符的 ASCII 码之差作为比较结果由函数值返回。strcmp用法如下:

	#include  #include  int main () {    char str1[99];    char str2[99];    int ret;    strcpy(str1, "abcdefF");    strcpy(str2, "ABCDEFF");    ret = strcmp(str1, str2);    if(ret < 0)    {       printf("str1 小于 str2");    }    else if(ret > 0)     {       printf("str1 大于 str2");    }    else     {       printf("str1 等于 str2");    }    return 0; } 运行结果:str1大于str2strcmp原型如下

	int strcmp (const char *str1,const char *str2) {                   int len = 0;        while(*str1 && *str2 && (*str1 == *str2))        {               str1++;               str2++;        }        return *str1-*str2; } dev c++调试代码如下 strcmp用strcmpa代替

	#include  int strcmpa (const char *str1,const char *str2) {                   int len = 0;             while(*str1 && *str2 && (*str1==*str2))        {               str1++;               str2++;        }        return *str1-*str2; } int main(void) {        char str1[99] = {"AA"};        char str2[99] = {"aa"};        printf("%d ",strcmpa(str1,str2)); } strlen用法及原型 strlen用于记录字符串长度。strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。strlen用法实例在这里:

	#include  #include  int main () {    char str[99];    int len;    strcpy(str, "You are my destiny");    len = strlen(str);    printf("%s的长度是 %d ", str, len);    return 0; } strlen原型如下 int strlen(char *str) {     int len = 0;        while(*str++)        {               len++;        }        return len; } dev c++调试过程如下 函数名用strlenn代替 #include  int strlenn(char *str) {     int len = 0;        while(*str++)        {               len++;        }        return len; } int main(void) {        char str[99] = {"You are my destiny"};        printf("%d ",strlenn(str));

	

	
  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分