用C比较字符串 – STRCMP

1. string.h中STRCMP功能

相比 2 的C号,我们已经做了一些非常简单的数学 <, >, >=, <=, ==, !=, 然而,比较字符串,那么我们就不能使用需要使用函数计算 STRCMP 在图书馆 文件string.h.

的strcmp函数比较字符串S1和S2链和给出的结果:

  • 1 如果s1大于s2
  • 0 如果S1 S2一样
  • -1 如果s1小于s2

注意: 在Linux中, 这个函数返回一个负值, 正, 0 (之间的距离为 2 分别不同的字符在S1中, S2).

例如,下面的程序:

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

int main()
{
    char s1[20];
    char s2[20];                

    do 
    {
        printf("Enter s1: ");
        gets(s1);
        printf("Enter s2: ");
        gets(s2);

        int x = strcmp(s1, s2);
        printf("x = %d", x);

        if(x < 0) printf(" => %s < %s", s1, s2);
        if(x > 0) printf(" => %s > %s", s1, s2);
        if(x == 0)printf(" => %s = %s", s1, s2);

        printf("\n\n");

    } while ( strcmp(s1, s2) != 0);

    return 0;
}

结果:

进入S1: 挂
进入S2: 何
X = -1 =>航 < 何

进入S1: 香港
进入S2: 她
X = 1 =>香>汉

进入S1: 洪
进入S2: 鸿
X = -1 =>红 < 鸿

进入S1: 办事处
进入S2: 办事处
X = 0 =>的=利息

2. 原理比较

原理比较 2 链,轮流浏览器 2 每个字符 2 链. ASCII码的比较 2 字符, 字符代码大于较大的链和停止比较. 如果字符的字符串有史以来之前较小的字符串比较.

S1 S2 结果 原因
挂 < 何 做一个 < 该 (97 < 111)
香港 香港>提问 从S2的所有字符比较
鸿 洪 < 鸿 做H的 < ħ (72 < 104)
办事处 办事处 利息=利息 2 相同的序列

参考 ASCII编码