C语言字符串处理函数 strcmp()和strncmp()的区别及使用

字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数。本文主要介绍 C语言中符串处理函数 strcmp()和strncmp()的区别使用方法,以及相关的示例代码。

1、strcmp()

比较两个字符串的大小,比较的是字符 ASCII 码大小。代码如下,

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
/*
int strcmp(const char *s1, const char *s2);  
参数
s1:字符串 1 首地址
s2:字符串 2 首地址
返回值
相等:0 
大于:>0 
小于:<0
*/
    //字符串比较
    char arr1[] = "AbCd";
    char arr2[] = "abcd";
    char arr3[] = "AbCd";
    char arr4[] = "ABCD";
    printf("%d\n", strcmp(arr1, arr2));
    printf("%d\n", strcmp(arr1, arr3));
    printf("%d\n", strcmp(arr1, arr4));
    return 0;
}

2、strncmp()

比较两个字符串的前 n 个字符的大小,比较的是字符 ASCII 码大小。代码如下,

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

int main ()
{
/*
int strncmp(const char *s1, const char *s2, size_t n); 
参数
s1:字符串 1 首地址
s2:字符串 2 首地址
n:指定比较字符串的数量

返回值
相等:0 
大于:> 0 
小于:< 0
*/
   char str1[15];
   char str2[15];
   int ret;


   strcpy(str1, "abcdef");
   strcpy(str2, "ABCDEF");

   ret = strncmp(str1, str2, 4);

   if(ret < 0)
   {
      printf("str1 小于 str2");
   }
   else if(ret > 0)
   {
      printf("str2 小于 str1");
   }
   else
   {
      printf("str1 等于 str2");
   }
   
   return(0);
}

3、strcmp()和strncmp()区别

strcmp()strncmp()作用相同。不同之处是,strncmp函数是指定比较size个字符。如果两个字符串s1s2的前size个字符相同,函数返回值为0。代码如下,

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

int main(int argc, char **argv)
{
    char *a = "aBcDeF";
    char *b = "AbCdEf";
    char *c = "aacdef";
    char *d = "aBcDeF";

    printf("strcmp(a,b) : %d\n", strcmp(a, b));
    printf("strcmp(a,c) : %d\n", strcmp(a, c));
    printf("strcmp(a,d) : %d\n", strcmp(a, d));
    printf("strncmp(a,b,1) : %d\n", strncmp(a, b , 1));
    printf("strncmp(a,c,2) : %d\n", strncmp(a, c , 2));
    printf("strncmp(a,d,3) : %d\n", strncmp(a, d , 3));

    return 0;
}

推荐阅读
cjavapy编程之路首页