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函数相关推荐

  1. C语言——数组、字符串处理函数、strlen、strcpy和strncpy、strcat和strncat、strcmp和strncmp

    目录 一.数组 1.定义:类型 数组名[元素个数] 2.数组不能动态定义 3.如何访问数组中的元素:数组名[下标] 4.循环与数组的关系 5.数组的初始化 二.C99标准中的数组 三.字符串处理函数 ...

  2. 【面试题】C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别

    模拟实现内存比较函数memcmp: 该函数与strcmp有相似之处,都可用于字符串比较是否相同,若相同,则返回0值.若前者大于后者,则返回大于0的整型值,否则返回小于0的整型值.  区别在于: str ...

  3. c语言strcmp() 和strncmp()

    一. strcmp() 包含头文件:#include <string.h> 1. 函数原型 int strcmp(const char *str1, const char *str2); ...

  4. C语言 : strcmp与strncmp详解

    strcmp与strncmp都是用来比较字符串的,区别在于能否比较指定长度字符串. strcmp 设这两个字符串为str1,str2, 若str1==str2,则返回零: 若str1 > str ...

  5. 《C语言杂记》理解字符串处理函数 strlen() strcpy() strcat() strcmp()

    在linux C 编程中,我们经常遇到字符串的处理,最多的就是字符串的长度.拷贝字符串.比较字符串等:当然现在的C库中为我们提供了很多字符串处理函数.熟练的运用这些函数,可以减少编程工作量,这里介绍几 ...

  6. 编写strcmp 和strncmp

    函数原型及介绍 若str1==str2,则返回零: 若str1 > str2,则返回正数: 若str1< str2,则返回负数. 即:两个字符串自左向右逐个字符相比(按ASCII值大小相比 ...

  7. strcmp和strncmp

    strcmp 和之前一样我们先来看看strcmp在msdn中的定义: The strcmp function compares string1 and string2 lexicographicall ...

  8. strcmp与strncmp的区别

    strcmp与strncmp都是用来比较字符串的,区别在于strncmp是比较指定长度字符串,两者都是二进制安全的,且区分大小写. strcmp strcmp(string1,string2) 设这两 ...

  9. c语言 strcmp函数_了解C ++ strcmp()函数

    c语言 strcmp函数 Hello, folks! In this article, we will be focusing on the working of the C++ strcmp fun ...

最新文章

  1. 小学五年级计算机备考方案,小学五年级备考方案(2)
  2. 如何从SQL Server 中取得字段说明
  3. docker详细介绍
  4. 在Python中使用XGBoost
  5. [置顶] 我的程序员之路(4)---C语言课程设计
  6. ASP.NET MVC项目 解决session失效
  7. 代码实现sql编译器_【数据蒋堂】第 19 期:从 SQL 语法看集合化
  8. LeetCode MySQL 1113. 报告的记录
  9. 计算机图形学 dda,计算机图形DDA算法
  10. Altium Designer——AD画PCB图步骤总结
  11. 如何把pdf转换成ezd_电脑怎么把pdf转换成ppt
  12. Windows 去除我的电脑页面多余的设备和驱动器图标
  13. 恒指均线流区间突破法的构建
  14. 计算机考研复试看成绩单吗,【必看】往届生复试你的成绩单去哪儿打印?
  15. 安装CodeGear RAD Studio 2007 v11.0.2804.9245 升级至 2852.9797
  16. 我的Android说
  17. (附源码)python+mysql+基于springboot小型车队管理系统 毕业设计061709
  18. Thinkpad T460p 扩容重装学习----SSD选购安装
  19. MacOS 10.10 以上解决机械键盘按键无法识别
  20. 如实现在jsp中发送邮件

热门文章

  1. Log4J 2.x 详解
  2. 简易 的QQ APP登录以及注册页面的实现
  3. java环境教程_java环境配置的详细教程(图文)
  4. electron安装【纯详细版】
  5. 深度学习——知识梳理篇(已入门)
  6. android webview虚拟现实,WebVR in WebView
  7. JDK、JRE与JVM的区别与联系,已拿offer入职
  8. 是时候,重新认识一下项目经理了
  9. 7 06 | 硅谷产品经理们都来自什么背景?
  10. 计算机组成原理总复习——知识点总结