strcpy,strlen,strcat, strcmp原形代码

String函数中的一些方法的用法:

1、strlen(str);求地址中字符串的长度,不包括\0.
2、strcat(str1,str2);把str2的内容追加到str1的后面。返回str1的首地址。

3、strcpy(str) ;复制字符串的库函数

4、strcmp(str1, str2)对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止

看下这个strcpy、strcat、strlen、strcmp函数的原型

char* strcpy(char* des, const char* source)
{
	char* r = des;
	//检查形参是否合法,是否有指向空间  
	assert((des != NULL) && (source != NULL));

	while ((*des++ = *source++) != '\0');

	return r;
}

/*不可用while(*str1++==*str2++)来比较,当不相等时仍会执行一次++,
	    return返回的比较值实际上是下一个字符。应将++放到循环体中进行。*/

/* 返回的结果
(1)字符串1=字符串2,返回0
(2)字符串1>字符串2,返回一个正整数
(3)字符串1<字符串2,返回一个负整数。
*/
int strcmp(const char *str1, const char *str2)
{
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
			return 0;

		str1++;
		str2++;
	}
	return *str1 - *str2;
}


char *mystrcat(char *dst, const char *src) //用自己的方式实现strcat函数功能
{
	char *p = dst;  //下面的操作会改变目的指针指向,先定义一个指针记录dst
	while (*dst != '\0')dst++;
	while (*src != '\0')*dst++ = *src++;
	*dst = '\0';
	return p;  //dst现在指向拼接后的最后一位字符,在这里返回dst,会出现错误
}



//这里返回的是一个整形
int strlen(const char *str) {
	assert(str != NULL);
	int len = 0;
	while (*str++ != '\0') {
		++len;
	}
	return len;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值