重生之我是一名程序员 44 ——字符串函数(3)

哈喽啊大家晚上好!迄今为止我已近给大家介绍了2个字符串函数,今天呢再给大家带来一个字符串函数——strcmp函数。

首先呢还是先带大家认识一下它。strcmp函数是C语言中的字符串函数之一,用于比较两个字符串是否相等。

该函数原型为:

int strcmp(const char *s1, const char *s2)

其中,s1和s2是要比较的两个字符串,返回值为int类型。当s1和s2相等时,返回0;当s1小于s2时,返回负数;当s1大于s2时,返回正数。

该函数的比较方式是按照字符的ASCII值依次进行比较,直到找到不同的字符为止。如果两个字符串完全相同,则需要比较完全部字符才能判断相等。

为了更方便大家去了解strcmp函数,我来带大家模拟实现一下它。代码如下:

int strcmp(const char* str1, const char* str2) {
    while (*str1 && (*str1 == *str2)) {
        str1++;
        str2++;
    }
    return *(const unsigned char*)str1 - *(const unsigned char*)str2;
}

该函数接受两个指向字符串的指针作为参数,通过while循环比较两个字符串的每个字符,直到遇到相异的字符或到达字符串的结束标志(即'\0')。在比较过程中,每次移动两个指针,直到两个字符串的相应字符不同。如果两个字符串相同,则返回0,否则返回字符差值,差值的大小取决于它们之间的ASCII码值差异。由于字符串的每个字符在存储时都是使用ASCII码值,因此类型转换为(unsigned char*),以防止有符号扩展带来的不必要的问题。

最后嘞,我再给大家举几个例子方便大家知道如何运用strcmp函数。比如:

  1. 比较两个字符串是否相等:
char str1[] = "hello";
char str2[] = "world";
if (strcmp(str1, str2) == 0) {
    printf("两个字符串相等\n");
} else {
    printf("两个字符串不相等\n");
}

 

      2.比较两个字符串的字典序大小:

char str1[] = "apple";
char str2[] = "banana";
if (strcmp(str1, str2) < 0) {
    printf("str1 比 str2 小\n");
} else if (strcmp(str1, str2) > 0) {
    printf("str1 比 str2 大\n");
} else {
    printf("str1 和 str2 相等\n");
}

 

      3.比较一个字符串是否是另一个字符串的前缀:

char str1[] = "hello, world";
char str2[] = "hello";
if (strncmp(str1, str2, strlen(str2)) == 0) {
    printf("str2 是 str1 的前缀\n");
} else {
    printf("str2 不是 str1 的前缀\n");
}

 

      4.比较两个字符串的前 n 个字符是否相等:

char str1[] = "hello, world";
char str2[] = "hello, everybody";
int n = 5;
if (strncmp(str1, str2, n) == 0) {
    printf("str1 和 str2 的前 %d 个字符相等\n", n);
} else {
    printf("str1 和 str2 的前 %d 个字符不相等\n", n);
}

那么到此,相信大家也认识和知道如何运用strcmp函数啦,那今天的分享就到此结束啦,各位明天见! 

你可能感兴趣的:(c语言,开发语言,青少年编程)