c语言编程笔录

首页 >   > 笔记大全

笔记大全

c语言strcmp函数用法详解

更新时间:2023-07-04

1. strcmp函数的定义

strcmp函数是C语言中的字符串比较函数,用于比较两个字符串的大小。它的定义如下:

int strcmp(const char *str1, const char *str2);

其中,str1和str2分别是需要比较的两个字符串。函数返回的值有三种情况:

  • 当str1小于str2时,返回一个负整数。
  • 当str1等于str2时,返回0。
  • 当str1大于str2时,返回一个正整数。

2. strcmp函数的用法

strcmp函数的使用非常简单,下面介绍几种常见的用法:

2.1 比较字符串是否相等

通过strcmp函数可以判断两个字符串是否相等,如果返回值为0,则表示两个字符串相等。

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

int main() {
    char str1[] = "hello";
    char str2[] = "hello";
    
    if (strcmp(str1, str2) == 0) {
        printf("str1和str2相等\n");
    }
    
    return 0;
}

上面的代码中,str1和str2都是"hello",所以它们相等,会输出"str1和str2相等"。

2.2 比较字符串的大小

strcmp函数还可以比较两个字符串的大小,通过返回值判断字符串的相对大小。

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

int main() {
    char str1[] = "apple";
    char str2[] = "banana";
    
    int result = strcmp(str1, str2);
    
    if (result < 0) {
        printf("str1小于str2\n");
    } else if (result == 0) {
        printf("str1等于str2\n");
    } else {
        printf("str1大于str2\n");
    }
    
    return 0;
}

上面的代码中,str1为"apple",str2为"banana",通过strcmp函数比较得到结果为负整数,所以输出"str1小于str2"。

3. strcmp函数的注意事项

在使用strcmp函数时,有一些需要注意的地方:

3.1 字符串的结束符

strcmp函数会从字符串的开头开始逐个比较字符,直到遇到字符串的结束符'\0'为止。如果字符串没有以'\0'结尾,strcmp函数会继续向后比较,可能导致意外的结果。

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

int main() {
    char str1[] = "hello";
    char str2[] = "hell";
    
    int result = strcmp(str1, str2);
    
    if (result == 0) {
        printf("str1和str2相等\n");
    } else {
        printf("str1和str2不相等\n");
    }
    
    return 0;
}

上面的代码中,str1为"hello",str2为"hell",虽然两个字符串前几个字符是相同的,但由于str2没有以'\0'结尾,所以strcmp函数会继续向后比较,导致结果为"str1和str2不相等"。

3.2 字符串的长度

如果两个字符串长度不同,strcmp函数会比较到较短字符串的结束符或者两个字符串的第一个不相等的字符为止,因此函数返回值可能不符合预期。

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

int main() {
    char str1[] = "apple";
    char str2[] = "app";
    
    int result = strcmp(str1, str2);
    
    if (result == 0) {
        printf("str1和str2相等\n");
    } else {
        printf("str1和str2不相等\n");
    }
    
    return 0;
}

上面的代码中,str1为"apple",str2为"app",虽然str2比str1短,但是strcmp函数只比较到str2的结束符,而不会继续向后比较,所以输出"str1和str2不相等"。


本文由c语言编程笔录版权所有,禁止未经同意的情况下转发