首页 > 编程笔记 > C语言笔记 阅读:11

strcmp()在C语言中怎么用(附带实例)

C语言标准库中的 strcmp() 函数用于比较两个字符串。

strcmp() 函数原型如下:
int strcmp (const char * str1, const char * str2);

如果两个字符串相同,则返回 0;否则返回其他值。

下面程序展示了一个使用 strcmp() 函数比较字符串的示例。
#include <stdio.h>
#include <string.h>
int main()
{
    const char *str1 = "abcdefg";
    const char *str2 = "abcdefgh";
    const char *str3 = "abcdef";

    // str1 与自己进行比较
    int ret = strcmp(str1, str1);
    printf("%d\n", ret);

    // str1 与 str2 进行比较
    ret = strcmp(str1, str2);
    printf("%d\n", ret);

    // str1 与 str3 进行比较
    ret = strcmp(str1, str3);
    printf("%d\n", ret);
    return 0;
}
运行结果为:

0
-1
1

字符串str1与自己进行比较,结果相同,因此返回了 0。"abcedfg" 与 "abcedfgh" 进行比较,返回了 -1。"abcedfg" 与 "abcedf" 进行比较,返回了 1。

不相同的情况下,有两种不同的结果:1 和 -1。这是为什么呢?

下图展示了字符串比较的过程:


图 1 字符串比较内部规则

字符串比较函数会依次比较每个字符,如果相同,则比较下一个字符;如果直到 '\0' 字符都相同,则返回 0,表示两字符串相同;如果不相同,则比较当前字符的 ASCII 码。

如果 str1 的当前字符大于 str2 的当前字符,则返回 1;否则返回 -1。例如当 str1 与 str2 进行比较时,不同的字符是 '\0' 与 'h',因为 '\0' 小于 'h',所以返回 -1;str1 与 str3 比较时,不同的字符是 'g' 与 '\0',因为 'g' 大于 '\0',所以返回 1。

相关文章