首先要明确strncmp的功能是:用来比较指定长度两个字符串的大小

目录

函数介绍

与strcmp的区别

ACSII表

函数实现:

用法示例:

结果展示:

函数介绍

函数原型:int strncmp(const char* str1, const char* str2, size_t num)
头  文  件:#include <string.h>
返  回  值:(与strncmp相同)str1 = str2   则返回0,
                   str1 > str2  则返回大于0的值,
                   str1 < str2  则返回小于0的值

说明:
判断两个字符串大小
 1)ACSII码 2)长度
注:区分大小写比较的,如果希望不区分大小写进行字符串比较,可以使用stricmp函数

strncmp()函数首先将str1字符串的第一个字符的ACSII值减去str2第一个字符的ACSII值(自左向右比较前n个字符,直到出现不同的字符或遇'\0'为止)

若差值为零则继续比较下去;若差值不为零,则返回差值。

特别注意:strncmp可用于比较两个字符串常量或比较数组和字符串常量,不能比较数字等其他形式的参数。

与strcmp的区别

1、先比较一下两个函数传参的不同:

int My_strncmp(const char* str1, const char* str2, int num)

         int My_strcmp(const char* str1, const char* str2)

strcmp与strncmp都是用来比较字符串的,区别在于能否比较指定长度字符串,故要多传一个长度参数,这也使得strncmp比strcmp更加精细。

ACSII表

函数实现:

//以null结尾的字符串 const修饰防止字符串被修改,进行保护
int My_strncmp(const char* str1, const char* str2, int n)
{if (!n)   //n=0时,无字符要比,直接return 0return 0;while (--n && *str1 && *str1 == *str2) //当字符相等且不为’\0‘时比较下个字符,知道n=0比完{str1++;str2++;}return *str1 - *str2;//字符不相等时,(*str1 - *str2)可以满足返回值正负的需求
}

用法示例:

#include <stdio.h>
#include<string.h>
#include <assert.h>
int My_strncmp(const char* str1, const char* str2, int n)
{if (!n)return 0;while (--n && *str1 && *str1 == *str2){str1++;str2++;}return *str1 - *str2;
}
int main()
{char str1[] = "SSLOVE YOU ";char str2[] = "SORRY";//经过手算可发现O的ACSII=79,S的ACSII=83,应该返回4 printf("%d\n", My_strncmp(str1, str2,2));return 0;
}

结果展示:

strncmp函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strcmp的区别)相关推荐

  1. strtok函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用)

    strtok()函数用于: 将字符串拆分为标记 函数介绍 函数声明:char * strtok ( char * str, const char * delimiters ); 头  文  件:#in ...

  2. strstr函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 )

    strstr()函数用于:查找子字符串 目录 函数介绍 用法示例 函数讲解 实现函数 事例展示 函数介绍 函数声明:char *strstr(const char *str1, const char ...

  3. memmove函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 )

    memmove()函数用于:移动内存块 函数介绍 函数声明:void * memmove ( void * destination, const void * source, size_t num ) ...

  4. strncpy函数详解看这一篇就够了-C语言(函数实现、使用用法举例、与strcpy的区别)

    首先要明确strncpy的功能是:拷贝src字符串的前n个字符至dest 目录 函数介绍 与strcpy的区别 函数实现: 用法示例: 结果展示: 函数介绍 函数原型: char *strncpy(c ...

  5. strcat函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strncat的区别)

    首先要明确strcat的功能是:将参数dest字符串和参数src字符串拼接起来 目录 函数介绍 与strncat的区别 函数实现: 用法示例: 结果展示: 函数介绍 函数原型:char* strcat ...

  6. memcpy函数详解 看这一篇就够了-C语言(函数讲解、 使用用法举例、作用)

    memcpy()函数用于:复制内存块 函数介绍 函数声明:void * memcpy ( void * destination, const void * source, size_t num ); ...

  7. strerror函数详解 看这一篇就够了-C语言(函数讲解、 使用用法举例、作用)

    strerror()函数用于:获取指向错误消息字符串的指针 函数介绍 函数声明: char * strerror ( int errnum ); 头  文  件:#include <string ...

  8. strncat函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strcat的区别)

    首先要明确strncat的功能是:从字符串src的开头拷贝n个字符到dest字符串尾部 目录 函数介绍: 与strcat的区别 函数实现: 用法示例: 结果展示: 函数介绍: 函数原型:char* s ...

  9. 代理后台中间件_Golang Gin 实战(十三)| 中间件详解看这一篇就够了

    6000字大章带你死磕Golang Gin中间件 在Gin的整个实现中,中间件可谓是Gin的精髓.一个个中间件组成一条中间件链,对HTTP Request请求进行拦截处理,实现了代码的解耦和分离,并且 ...

最新文章

  1. javaScript的调试(二)
  2. 关于 Capella 需要纠正的语音
  3. 轻量集群管理工具PSSH
  4. iPhoneUI元素的大小
  5. win7 php mysql扩展名_Win7 配置Apache+PHP+Mysql环境
  6. 《唐人街探案3》回归春节档,2021大年初一上映!
  7. 企鹅手机即将发布,TencentOS会是亮点么?
  8. NodeJS学习笔记之express
  9. Python 做自动化测试环境搭建
  10. 设计模式-职责链模式 (分离职责,动态组合)
  11. shell脚本练习实例
  12. 景林合伙人张小刚:我们的优势在哪里?
  13. ADSL密码查看器绿色版
  14. c++strcmp函数
  15. AHCI驱动中的cmd
  16. 民间借贷红线大幅下调,二手车平台去金融化将成趋势?
  17. C/C++经典算法——约瑟夫问题
  18. 从不跑步到无间断跑步1年感受
  19. Kubeadm 部署企业级高可用Kubernetes(适用于ECS)
  20. 【Leetcode刷题Python】714. 买卖股票的最佳时机含手续费

热门文章

  1. mybatis传入参数为map时如何在mapper.xml中获取
  2. 机械硬盘接口类型(IDE、SATA、SCSI、SAS)
  3. http拨测是什么意思_移动业务质量拨测系统的设计方案
  4. ACP考试关键词(一)
  5. 令人头疼的编程命名问题你如何面对?
  6. APMCM(亚太地区数模竞赛)2014年-C题:Research about Public Elementary Teachers for Vocational Education(附获奖论文)
  7. 逻辑思维/(美)理查德·尼斯贝特——拥有智慧思考的工具
  8. 全局安装 Angular CLI
  9. 毒鸡汤 | 云服务器部署项目
  10. java unit test_Java中几种Unit Test场景