strncmp() 函数功能说明

strncmp() 是 C 语言标准库 string.h 中的一个字符串比较函数,用于比较两个字符串的前 n 个字符。

函数原型

int strncmp(const char *str1, const char *str2, size_t n);

功能描述

strncmp() 比较字符串 str1str2 的前 n 个字符,比较时会一直进行直到出现不同的字符或遇到空字符(‘\0’)或比较完前 n 个字符为止。

返回值

  • 小于 0:如果 str1 的前 n 个字符小于 str2 的前 n 个字符
  • 等于 0:如果 str1 的前 n 个字符等于 str2 的前 n 个字符
  • 大于 0:如果 str1 的前 n 个字符大于 str2 的前 n 个字符

比较是基于字符的 ASCII 值进行的。

与 strcmp() 的区别

strncmp()strcmp() 的主要区别在于:

  • strcmp() 比较整个字符串直到遇到空字符
  • strncmp() 只比较前 n 个字符,即使没有遇到空字符

示例代码

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

int main() {
    char str1[] = "Hello World";
    char str2[] = "Hello C";

    // 比较前5个字符
    int result = strncmp(str1, str2, 5);
    if (result == 0) {
        printf("前5个字符相同\n");
    } else {
        printf("前5个字符不同\n");
    }

    // 比较前7个字符
    result = strncmp(str1, str2, 7);
    if (result < 0) {
        printf("str1 小于 str2\n");
    } else if (result > 0) {
        printf("str1 大于 str2\n");
    } else {
        printf("str1 等于 str2\n");
    }

    return 0;
}

注意事项

  1. strncmp() 是安全的,因为它限制了比较的字符数量,可以防止缓冲区溢出
  2. 如果任一字符串长度小于 n,比较会在遇到第一个空字符时停止
  3. 比较是按字典顺序进行的,基于字符的 ASCII 值