您好,欢迎来到汇智旅游网。
搜索
您的当前位置:首页关于strcmp与strcpy函数的相关用法

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

来源:汇智旅游网

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

从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;
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务