用c语言strncmp函数,strcmp和strncmp函数
1.strcmp
This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ or until a terminating null-character is reached.//摘自msdn
此函数开始比较每个字符串的第一个字符。如果它们彼此相等,则继续使用以下对,直到字符消失或达到终止的空字符为止
注意:
返回值
str1 str2
1
>
0
=
-1
<
1.第一个字符串大于第二个字符串,则返回大于0的数字
2.第一个字符串等于第二个字符串,则返回0
3.第一个字符串小于第二个字符串,则返回小于0的数字
int my_strcmp(const char* str1, const char* str2)
{
const unsigned char* src1 = (const unsigned char*)str1;
//强转成const unsigned char* 是为了下面两个指针的值的ascii相减
const unsigned char* src2 = (const unsigned char*)str2;
int ret = 0;
assert(src1 != NULL && src2 != NULL);
while (!(*src1 - *src2) && *src2)//如果两个值不相等或*src2的ascii为0,
{//(*src1-*src2,所以如果*src2的ascii的值为0,那*src1就比*src2大或相等,显然结果就已知了,退出循环),
//就继续判断, 否则,求出相减的值并退出循环
src1++, src2++;
}
ret = (*src1 - *src2);
if (ret < 0)
{
return -1;
}
else if (ret>0)
{
return 1;
}
return (ret);
}
int main()
{
char str1[20]= "abcd";
char str2[20] = "abcdef";
printf("%d\n",my_strcmp(str1, str2));
return 0;
}
运行结果:
2.strncmp
strncmp比较两个字符串前n个字符,其他内容和strcmp一样。
int my_strncmp(const char* str1, const char* str2,size_t n)//比较两个字符串前n个字符
{
const unsigned char* src1 = (const unsigned char*)str1;
//强转成const unsigned char* 是为了下面两个指针的值的ascii相减
const unsigned char* src2 = (const unsigned char*)str2;
int ret = 0;
assert(src1 != NULL && src2 != NULL);
while (!(*src1 - *src2) && *src2 && n > 0 )//如果两个值不相等或*src2的ascii为0,
{//(*src1-*src2,所以如果*src2的ascii的值为0,那*src1就比*src2大或相等,显然结果就已知了,退出循环),
//就继续判断, 否则,求出相减的值并退出循环
src1++, src2++,n--;
}
ret = (*(--src1) - *(--src2));//比较n个字符指针移动到了n+1个位置,-1返回n的范围内
if (ret < 0)
{
return -1;
}
else if (ret>0)
{
return 1;
}
return (ret);
}
int main()
{
char str1[20]= "abcd";
char str2[20] = "abcdef";
printf("%d\n",my_strncmp(str1, str2,4));
return 0;
}
运行结果:
用c语言strncmp函数,strcmp和strncmp函数相关推荐
- C语言——数组、字符串处理函数、strlen、strcpy和strncpy、strcat和strncat、strcmp和strncmp
目录 一.数组 1.定义:类型 数组名[元素个数] 2.数组不能动态定义 3.如何访问数组中的元素:数组名[下标] 4.循环与数组的关系 5.数组的初始化 二.C99标准中的数组 三.字符串处理函数 ...
- 【面试题】C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别
模拟实现内存比较函数memcmp: 该函数与strcmp有相似之处,都可用于字符串比较是否相同,若相同,则返回0值.若前者大于后者,则返回大于0的整型值,否则返回小于0的整型值. 区别在于: str ...
- c语言strcmp() 和strncmp()
一. strcmp() 包含头文件:#include <string.h> 1. 函数原型 int strcmp(const char *str1, const char *str2); ...
- C语言 : strcmp与strncmp详解
strcmp与strncmp都是用来比较字符串的,区别在于能否比较指定长度字符串. strcmp 设这两个字符串为str1,str2, 若str1==str2,则返回零: 若str1 > str ...
- 《C语言杂记》理解字符串处理函数 strlen() strcpy() strcat() strcmp()
在linux C 编程中,我们经常遇到字符串的处理,最多的就是字符串的长度.拷贝字符串.比较字符串等:当然现在的C库中为我们提供了很多字符串处理函数.熟练的运用这些函数,可以减少编程工作量,这里介绍几 ...
- 编写strcmp 和strncmp
函数原型及介绍 若str1==str2,则返回零: 若str1 > str2,则返回正数: 若str1< str2,则返回负数. 即:两个字符串自左向右逐个字符相比(按ASCII值大小相比 ...
- strcmp和strncmp
strcmp 和之前一样我们先来看看strcmp在msdn中的定义: The strcmp function compares string1 and string2 lexicographicall ...
- strcmp与strncmp的区别
strcmp与strncmp都是用来比较字符串的,区别在于strncmp是比较指定长度字符串,两者都是二进制安全的,且区分大小写. strcmp strcmp(string1,string2) 设这两 ...
- c语言 strcmp函数_了解C ++ strcmp()函数
c语言 strcmp函数 Hello, folks! In this article, we will be focusing on the working of the C++ strcmp fun ...
最新文章
- 小学五年级计算机备考方案,小学五年级备考方案(2)
- 如何从SQL Server 中取得字段说明
- docker详细介绍
- 在Python中使用XGBoost
- [置顶] 我的程序员之路(4)---C语言课程设计
- ASP.NET MVC项目 解决session失效
- 代码实现sql编译器_【数据蒋堂】第 19 期:从 SQL 语法看集合化
- LeetCode MySQL 1113. 报告的记录
- 计算机图形学 dda,计算机图形DDA算法
- Altium Designer——AD画PCB图步骤总结
- 如何把pdf转换成ezd_电脑怎么把pdf转换成ppt
- Windows 去除我的电脑页面多余的设备和驱动器图标
- 恒指均线流区间突破法的构建
- 计算机考研复试看成绩单吗,【必看】往届生复试你的成绩单去哪儿打印?
- 安装CodeGear RAD Studio 2007 v11.0.2804.9245 升级至 2852.9797
- 我的Android说
- (附源码)python+mysql+基于springboot小型车队管理系统 毕业设计061709
- Thinkpad T460p 扩容重装学习----SSD选购安装
- MacOS 10.10 以上解决机械键盘按键无法识别
- 如实现在jsp中发送邮件