当前位置: 首页 > news >正文

编程技能:字符串函数09,strncmp

专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:编程技能:字符串函数08,strcmp

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:编程技能:字符串函数08,strcmp

回到目录

下一篇:无

本节前言

上一节,我们讲解的是一个字符串比较函数,strcmp 。

本节,我们来讲解另一个字符串比较函数,strncmp 。

一.    strncmp 基本介绍

想要使用 strncmp 函数,如果是想要在 C 语言里面使用,那么,你需要有【#include <string.h>】一行。如果是想要在 C++ 里面使用,你需要有【#include <cstring>】一行。

下面,是 strncmp 函数的原型声明。

int strncmp(const char * cs,const char * ct,int count);

我在这里所列的原型声明,它只是我从 Linux 0.12 内核中提取出来的一种声明而已。在 Visual Studio 里面,它的声明形式不是这样子的。但是呢,我在这里列举出来的声明,它是可用的。

此函数的功能是,比较 cs 和 ct 所指向的字符串的前 count 个字符。比较的时候,是以字符的 ASCII 码的值来进行比较。比较的情况,分为以下几种。

(一)假定 cs 与 ct 里面,长度较小的字符串,所包含的有效字符数量为 len 。也就是,除去 NUL 结束符,两者之中的较短的那个字符串,包含着 len 个字符。然后呢,我们假定,【count <= len】。在此基础上,两个字符串的前 count 个字符里面,每一个对应位置的字符的 ASCII 码均相等。对于这种情况,返回 0 值。例如,strncmp("county", "country", 5) 。

(二)两个字符串在比较前面的 0 个或多个字符的 ASCII 码值的时候,均相等。到了某一位,不相等了。此时,若是 cs 所指向的字符串的该位字符的 ASCII 码值大于 ct 的对应字符的 ASCII 码值,则返回正数。例如,strncmp( "country", "continue", 6) 。

(三)两个字符串在比较前面的 0 个或多个字符的 ASCII 码值的时候,均相等。到了某一位,不相等了。此时,若是 cs 所指向的字符串的该位字符的 ASCII 码值小于 ct 的对应字符的 ASCII 码值,则返回负数。例如,strncmp("Happiness", "Heightness", 6) 。

(四)cs 字符串的有效字符长度大于 len,ct 字符串的有效字符长度为 len,参数 count 的值也大于 len 。有效字符长度,是指某一个字符串的不包含 NUL 结束符在内的,有效字符的个数。假定在比较前 len 个字符的时候,两个字符串的对应字符的 ASCII 码均相等。再往下比较的时候,cs 的对应字符并非 '\0',而 ct 的对应字符为 '\0',此时,返回正数。例如,strncmp("Heightness", "Height", 6) 。

(五)cs 字符串的有效字符长度为 len,ct 字符串的有效字符长度大于 len,参数 count 的值也大于 len 。有效字符长度,是指某一个字符串的不包含 NUL 结束符在内的,有效字符的个数。假定在比较前 len 个字符的时候,两个字符串的对应字符的 ASCII 码均相等。再往下比较的时候,cs 的对应字符为 '\0',而 ct 的对应字符并非 '\0',此时,返回负数。例如,strncmp("Cap", "Caption", 4) 。

到了这里,基础知识部分,我们就算是讲完了。

接下来,我们分别给出 C 语言示例代码与 C++ 示例代码。

二.    strncmp 的 C 语言代码示例

代码如下。

#include <stdio.h>
#include <string.h>int main(void)
{int res_a, res_b, res_c, res_d, res_e;char strA1[] = "county";char strA2[] = "country";char strB1[] = "country";char strB2[] = "continue";char strC1[] = "Happiness";char strC2[] = "Heightness";char strD1[] = "Heightness";char strD2[] = "Height";char strE1[] = "Cap";char strE2[] = "Caption";res_a = strcmp(strA1, strA2);res_b = strcmp(strB1, strB2);res_c = strcmp(strC1, strC2);res_d = strcmp(strD1, strD2);res_e = strcmp(strE1, strE2);printf("\t字符串比较结果:\n");printf("\t%d  %d  %d  %d  %d\n", res_a, res_b, res_c, res_d, res_e);return 0;
}

上述代码,是可以直接在 Visual Studio 里面运行的。

大家若是还不会使用 Visual Studio,可以参考下述链接所示的两篇文章,来学习使用 Visual Studio 来建立解决方案和编译运行解决方案的方法。

Windows编程:使用 VS2010 编写 C语言程序-CSDN博客

Windows编程:用 VS2019 编写C语言程序-CSDN博客

运算结果如下:

图1

三.    strncmp 的 C++ 代码示例

代码如下。

#include <iostream>
#include <cstring>
using namespace std;int main(void)
{int res_a, res_b, res_c, res_d, res_e;char strA1[] = "county";char strA2[] = "country";char strB1[] = "country";char strB2[] = "continue";char strC1[] = "Happiness";char strC2[] = "Heightness";char strD1[] = "Heightness";char strD2[] = "Height";char strE1[] = "Cap";char strE2[] = "Caption";res_a = strcmp(strA1, strA2);res_b = strcmp(strB1, strB2);res_c = strcmp(strC1, strC2);res_d = strcmp(strD1, strD2);res_e = strcmp(strE1, strE2);cout << "\t字符串比较结果:\n";cout << "\t" << res_a<< "  " << res_b<< "  " << res_c<< "  " << res_d<< "  " << res_e << endl;return 0;
}

结束语

strncmp 不难。希望你能够理解本节的内容。

到了这里,字符串比较,我们也算是学完了。

下一节开始,我们来学习在字符串中定位字符。

专栏导航

本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。

(一)WIn32 专栏导航

上一篇:编程技能:字符串函数08,strcmp

回到目录

下一篇:无

(二)MFC 专栏导航

上一篇:编程技能:字符串函数08,strcmp

回到目录

下一篇:无

相关文章:

  • Base64加密解密
  • C++:array容器
  • 十七、面向对象底层逻辑-MessageSource接口设计
  • 野火RK3588部署yolov8
  • html模板-源码免费下载-html通用模板-html建站模板
  • 大模型时代,Python 近红外光谱与 Transformer 模型:学习的必要性探究
  • 跨部门项目管理优化:告别邮件依赖
  • C++核心编程_初始化列表
  • 半导体器件
  • Linux权限
  • 搭建人工智能RAG知识库的主流平台与特点概述
  • 苍穹外卖05 Redis常用命令在Java中操作Redis_Spring Data Redis使用方式店铺营业状态设置
  • 学习python day4
  • ILRuntime中实现OSA
  • 第20天-python生成word文档
  • [Linux] Linux信号量深度解析与实践(代码示例)
  • C++ for QWidget:正则表达式和QRegExp
  • 提升搜索效率:深入了解Amazon Kendra的强大功能
  • ERP 与 WMS 对接深度解析:双视角下的业务与技术协同
  • origin绘图之【如何将多条重叠、高度重叠的点线图、折线图分开】
  • 成全视频免费高清观看在线播放下载/黑帽seo是什么
  • 国土资源部网站2014年02月28日全国党风廉政建设视频会/seo交流
  • 一个b2c网站多少钱/百度免费发布信息网站
  • 上海网站建设网页制作你却/排名优化公司电话
  • 网站建设的知识和技能/关键词歌曲免费听
  • 广州有哪些网站建设/网络推广都有哪些方式