strcmp()在C语言中怎么用(附带实例)
C语言标准库中的 strcmp() 函数用于比较两个字符串。
strcmp() 函数原型如下:
如果两个字符串相同,则返回 0;否则返回其他值。
下面程序展示了一个使用 strcmp() 函数比较字符串的示例。
不相同的情况下,有两种不同的结果:1 和 -1。这是为什么呢?
下图展示了字符串比较的过程:

图 1 字符串比较内部规则
字符串比较函数会依次比较每个字符,如果相同,则比较下一个字符;如果直到 '\0' 字符都相同,则返回 0,表示两字符串相同;如果不相同,则比较当前字符的 ASCII 码。
如果 str1 的当前字符大于 str2 的当前字符,则返回 1;否则返回 -1。例如当 str1 与 str2 进行比较时,不同的字符是 '\0' 与 'h',因为 '\0' 小于 'h',所以返回 -1;str1 与 str3 比较时,不同的字符是 'g' 与 '\0',因为 'g' 大于 '\0',所以返回 1。
strcmp() 函数原型如下:
int strcmp (const char * str1, const char * str2);
- const char *str1 表示待比较字符串 1 的首地址;
- const char *str2 表示待比较字符串 2 的首地址。
如果两个字符串相同,则返回 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
不相同的情况下,有两种不同的结果:1 和 -1。这是为什么呢?
下图展示了字符串比较的过程:

图 1 字符串比较内部规则
字符串比较函数会依次比较每个字符,如果相同,则比较下一个字符;如果直到 '\0' 字符都相同,则返回 0,表示两字符串相同;如果不相同,则比较当前字符的 ASCII 码。
如果 str1 的当前字符大于 str2 的当前字符,则返回 1;否则返回 -1。例如当 str1 与 str2 进行比较时,不同的字符是 '\0' 与 'h',因为 '\0' 小于 'h',所以返回 -1;str1 与 str3 比较时,不同的字符是 'g' 与 '\0',因为 'g' 大于 '\0',所以返回 1。