关于strcmp与strcpy函数的相关用法

编程入门 行业动态 更新时间:2024-10-28 15:24:14

strcpy的相关讲解:若字符串char b[100]赋值给字符串char a[100],若strlen(a)>length(b),a字符串的’\0’后也确实赋值了,但是输出的话,遇到第一个’\0’,字符串a便输出了。
下面举个例子吧:这个例子见以下链接:
blog.csdn.net/okawari_richi/article/details/57411796
例如:

· 最终答案输出是 “ABC\0”;
· 为什么答案不是"ABC\0ef";

从strcpy函数的实现代码可以看出当src指针指向为‘\0’时将会停止字符串的复制,由此可以得知返回ret指针所指向的数组a内容应该是 “ABC\0ef”,也就是说实际内存数组a中的内容应该是“ABC\0ef“;但是为什么最终显示会是"ABC\0"呢,原因在于,strcpy的本身属性:即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符;

基于此种原因,但是字符串的特性是什么呢?字符串最后一个字节存放的是一个空字符——“\0”,用来表示字符串的结束。把b复制到a之后会令b的空字符把复制后的字符串隔断,所以最终printf输出只能是"ABC\0";

strcpy的三种实现方式:
第一种:

char * strcpy(char *dst,const char *src)   //[1]
{assert(dst != NULL && src != NULL);    //[2]char *ret = dst;  //[3]while ((*dst++=*src++)!='\0'); //[4]return ret;
}

第二种:

char *Strcpy(char *dst,char *src)
{assert(dst!=NULL&&src!=NULL);char *res=dst;do{*dst=*src;	dst++;src++;}while(*(dst-1)!='\0'&&*(src)!='\0');return res;
}

第三种:

char *Strcpy(char *dst,char *src)
{assert(dst!=NULL&&src!=NULL);//if(det==NULL||src==NULL)//return NULL;char *res=dst;while(*src!='\0') {*dst=*src;//不能直接用dst=*src, 这样相当于一个数值给了指针。 //除非初始化的时候,把数值给指针才行。例如:int *a=4;//赋值类型要匹配 dst++;src++;}*dst=*src;return res;
}

strcmp函数的实现方法:

int Strcmp(const char *a,const char *b)
{while(!(*a-*b)&&*a){a++;b++;}if(*a>*b)return 1;else if(*a<*b)return -1;return 0;
}

更多推荐

函数,strcmp,strcpy

本文发布于:2023-05-28 12:26:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/320860.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   strcmp   strcpy

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!