string.h中的函数后续

string.h中的函数后续

strcat()与strncat

strcat(str1,str2):将str2的内容复制到str1后面。
strncat(str1,str2,n):j将str2前n个内容复制到str1后面。
注意:在strncat()在复制完前n项后如果没有复制到‘\0’,则会自动补一个‘\0’.

mystrcat()

#include<stdio.h>
#include<assert.h>

char *mystrcat(char *dest,const char *src)
{
	assert(dest!=0 && src!=0);
	char *pdest = dest;
	while(*dest != '\0')
	{
		dest++;	
	}
	while((*dest++ = *src++) != '\0');
	return pdest;
}

mystrncat()

#include<stdio.h>
#include<assert.h>

char *mystrncat(char *dest,const char *src,size_t n)
{
	assert(dest!=NULL && src!=NULL);
	char *pdest=dest;
	while(*dest !='\0')
	{
		dest++;	
	}
	while(n-- >0 && (*dest++ =*src++) !='\0');
	dest='\0';
	return pdest;
}

strcmp() 与 mstrncmp()

strcmp(str1,str2): 比交两个字符串的大小,str1>str2 返回1,str1<str2返回-1,str1 == str2 返回0;
strncmp(str1,str2,n):只比交两个字符串前n项的大小,str1>str2 返回1,str1<str2返回-1,str1 ==str2 返回0;
注意:比较字符串的大小比较的是他们的字符的ASCII码;
mystrcmp()

int mystrcmp(const char *s1,const char *s2)
{
	assert(s1!=NULL && s2!=NULL);
	while(*s1!='\0' && *s2!='\0' && *s1==*s2)
	{
		s1++;
		s2++;
	}
	return *s1-*s2;
}

mystrncmp()

int mystrncmp(const char *s1,const char *s2)
{
	assert(s1!=NULL && s2!=NULL);
	while(n-- > 1 && *s1!='\0' && *s2!='\0' && *s1==*s2)
	{
		s1++;
		s2++;
	}
	return *s1-*s2;
}

我返回的是*s1-*s2,所以返回的是正数代表s1>s2,负数代表s1<s2,0代表s1==s2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值