C strncmp() 函数

C strncmp() 语法

strncmp() 是 C 语言 <string.h> 标准库的一个函数,它用于比较两个字符串的大小。需要注意的是,strncmp() 只会比较前 n 个字符。

语法:

strncmp(str1, str2, n)

说明:

strncmp() 函数接收以下 3 个参数。

  • str1(const char*):第 1 个字符串的指针。
  • str2(const char*):第 2 个字符串的指针。
  • n(size_t):需要比较多少个字符。

strncmp() 函数会返回一个整数,以表示比较结果。

  • 如果 str1 小于 str2,则返回一个 “负数” 。
  • 如果 str1 等于 str2,则返回 “0” 。
  • 如果 str1 大于 str2,则返回一个 “正数” 。

提示: strncmp 是 “string n compare” 的缩写。

C strncmp() 摘要

使用频率
修改字符串
官方文档 查看

C strncmp() 示例

接下来,我们通过一个简单的例子来讲解一下 C strncmp() 函数是如何使用的。

示例:strncmp() 基本用法

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str1[] = "abcde";
    char str2[] = "abxde";

    int result = strncmp(str1, str2, 3);
    printf("%d", result);

    return 0;
}

运行结果如下。

-21

分析:

strncmp(str1, str2) 返回了一个负数(-21),不同编译器可能会返回 -1,但意义相同,都是表示 str1 小于 str2。这里小伙伴就肯定就会疑问:“对两个字符串进行大小比较,它们究竟是比较些什么呢?”

如果对两个字符串进行大小比较,strncmp() 其实就是从它们的首个字符开始一一对比,直到出现第一个不同的字符为止。接着我们就对比这两个不同字符的 “ASCII 码” 的大小。ASCII 码较大的,就表示该字符串较大。

比如上面这个例子中的 str1 和 str2,它们前 2 个字符是相同的,这里还没有 “分出胜负”。到了第 3 个字符,'c' 的 ASCII 码肯定比 'x' 的 ASCII 码小,所以也就代表 str1 比 str2 小。

对于上面例子来说,如果我们把 strncmp(str1, str2, 3) 修改为 strncmp(str1, str2, 2),此时返回的结果就是 0,小伙伴们可以思考一下为什么。

strncmp() 的应用场景

在实际开发中,strncmp() 函数适用于需要比较字符串的特定前缀,或在有限范围内进行字符串比较的场景,比如:

  • 判断一个字符串是否以特定的前缀开头。
  • 解析固定格式的数据行,比较开头部分的标识符。
  • 实现简单的命令解析,判断用户输入是否是某个命令。
  • 在处理可能存在缓冲区溢出风险的字符串时,提供一种更安全的比较方式。

strcmp() 类似,strncmp() 也是区分大小写的。如果需要进行不区分大小写的前缀比较,我们可以考虑使用 strncasecmp() 函数(非标准的 POSIX 函数)或其他方法。

上一篇: strcmp()

下一篇: strcpy()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号