C语言字符串函数

C语言 strncmp()函数用于比较两个字符串的前n个字节,它是一个区分大小的函数。它是C语言的字符串函数之一。

语法

语法如下:
int strncmp(char *s1,char * s2, int n)

参数

  • s1:指定要比较的第一个字符串。
  • s2:指定要比较的第二个字符串。
  • n: 指定比较两个字符串的前n个字符。

功能

比较字符串s1和s2的前n个字符的不同。

比较的原理是对字符串s1和s2逐个字符进行比较,当第一次出现不同的时候,对它们的ASCII码值进行比较并返回结果。

返回值

返回int类型。

  • 当s1<s2时,返回值<0
  • 当s1=s2时,返回值=0
  • 当s1>s2时,返回值>0

程序示例

介绍3个例子,了解C语言 strncmp ()函数的使用方法。

例1

比较结果等于0的例子

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

int main(){
    char *s1 = "yxjc123.com"; //第一个字符串
    char *s2 = "yxjc123.com" ;//第二个字符串
    int r1 = strncmp(s1, s2, 6);
    printf("s1和s2的比较结果:%d", r1);  //完全相同

    return 0;
}  

程序运行结果:

s1和s2的比较结果:0

例2

比较结果大于0的例子

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

int main(){
    char *s1 = "yxjc123.com"; //第一个字符串
    char *s2 = "yxjc123" ;//第二个字符串
    int r1 = strncmp(s1, s2, 8);
    printf("s1和s2的比较结果:%d", r1);  //大于

    return 0;
} 

程序运行结果:

s1和s2的比较结果:46

例3

比较结果小于0的例子,区分大小写。

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

int main(){
    char *s1 = "yxJc123.com"; //第一个字符串
    char *s2 = "yxjc" ;//第二个字符串
    int r1 = strncmp(s1, s2, 6);
    printf("s1和s2的比较结果:%d", r1);  //小于

    return 0;
} 

程序运行结果:

s1和s2的比较结果:-32

 我们看到,虽然s1字符串长度大于s2但是因为是逐个比较,第一次出现不同的是J和j字符,它们相差32,所以返回结果为-32。

上面的例子是比较前6个字符,如果改为2,它们又相等了,因为它们的前2个字符相同。

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

int main(){
    char *s1 = "yxJc123.com"; //第一个字符串
    char *s2 = "yxjc" ;//第二个字符串
    int r1 = strncmp(s1, s2, 2);
    printf("s1和s2的比较结果:%d", r1);  //小于

    return 0;
} 
输出:
s1和s2的比较结果:0