strcmp与strncmp的实现和比较

strcmp不受长度限制的字符串函数,strncmp受长度限制在这里插入图片描述
在这里插入图片描述
查阅资料比较strncmp比strcmp多一个长度n的参数去控制比较的长度
两个函数都返回一个整数值去判断两个字符串谁大
下面简单实现
strcmp实现

int my_strcmp(const char* str1, const char* str2)
{
	assert(str1 && str2);
	//断言判断一下str1和str2
	while (*str1 || *str2)
	{//判断是否有字符串到'\0'
		if (*str1 != *str2)
			break;
		str1++;
		str2++;
	}
	return *str1 - *str2;
	//判断小于等于或大于0,来比较那个字符串大
}

strncmp的实现

int my_strncmp(const char* str1, const char* str2,int n)
{
	assert(str1 && str2);
	//断言判断一下str1和str2
	while (--n&&(*str1 || *str2))
	{//判断是否有字符串到'\0'
		//用n纪录判断的字符数
		if (*str1 != *str2)
			break;
		str1++;
		str2++;
	}
	return *str1 - *str2;
	//判断小于等于或大于0,来比较那个字符串大
}

通过比较可以发现strncmp相对于strcmp来说更为细致,strncmp
可以完成一些strcmp无法完成的任务
完整代码和样例测试

#include 
using namespace std;
#include 
#include 
int my_strncmp(const char* str1, const char* str2,int n)
{
	assert(str1 && str2);
	//断言判断一下str1和str2
	while (--n&&(*str1 || *str2))
	{//判断是否有字符串到'\0'
		//用n纪录判断的字符数
		if (*str1 != *str2)
			break;
		str1++;
		str2++;
	}
	return *str1 - *str2;
	//判断小于等于或大于0,来比较那个字符串大
}
int main()
{
	char a[] = "abcd";
	char b[] = "abd";
	cout<<my_strncmp(a, b,2)<<endl;
	cout << strncmp(a, b,2);
	return 0;
}

运行结果
strcmp与strncmp的实现和比较_第1张图片

你可能感兴趣的:(算法,c++,c语言)