目录
strcmp函数是C语言中的字符串比较函数,用于比较两个字符串的大小。
🍂函数头文件:
#include
🍂函数原型:
int strcmp ( const char * str1, const char * str2 );
- 该函数接受两个参数,分别为要比较的两个字符串的指针。
- 返回值为整形,表示两个字符串的大小关系。
🍂函数返回值:

- 若str1小于str2,则返回负整数,即小于0的数。
- 若str1和str2相等,则返回0。
- 若str1大于str2,则返回正整数,即大于0的数。
strcmp函数的比较规则是按照字典序进行比较,即逐个字符比较。具体的比较过程如下:
- 若两个字符相等,则继续比较下一个字符。
- 若两个字符不相等,则返回它们的ASCII码差值(ASCII码值大的字符串大)。
- #include
- #include
-
- int main()
- {
- char str1[] = "appple";
- char str2[] = "banana";
-
- int ret = strcmp(str1, str2);
- if (ret == 0)
- printf("str1和str2相等\n");
- else if (ret > 0)
- printf("str1大于str2\n");
- else
- printf("str1小于str2\n");
-
- return 0;
- }
🍂运行结果:

1,字符串的比较是按照字典序进行的,因此大小写字母的比较结果不同。
- #include
- #include
-
- int main()
- {
- char str1[] = "hello";
- char str2[] = "HELLO";
-
- int ret = strcmp(str1, str2);
- if (ret == 0)
- printf("str1和str2相等\n");
- else if (ret > 0)
- printf("str1大于str2\n");
- else
- printf("str1小于str2\n");
-
- return 0;
- }
🍂运行结果:

2,在比较字符串时,需要确保字符串以'\0'结尾,否则可能会导致比较结果不正确。
- #include
- #include
-
- int main()
- {
- char str1[] = "hello";
- char str2[] = "hello";
-
- str1[5] = '!';
- int ret = strcmp(str1, str2);
- if (ret == 0)
- printf("str1和str2相等\n");
- else if (ret > 0)
- printf("str1大于str2\n");
- else
- printf("str1小于str2\n");
-
- return 0;
- }
🍂运行结果:
🍂分析:
在这段代码中,我们将str1字符串的结尾标识符'\0'改成了'!',运行代码后,输出结果为"str1大于str2"。这是因为str1字符串没有以'\0'结尾,所以strcmp函数会继续比较下去,直到遇到str2字符串的结尾标识符'\0'。由于str1字符串比str2字符串长,所以str1被认为是大于str2。
- #include
- #include
- #include
-
- int my_strcmp(const char* str1, const char* str2)
- {
- assert(str1 && str2);
- while (*str1 == *str2)
- {
- if (*str1 == '\0')
- return 0;//相等
- str1++;
- str2++;
- }
- if (*str1 > *str2)
- return 1;//大于
- else
- return -1;//小于
- }
-
- int main()
- {
- char str1[] = "appple";
- char str2[] = "banana";
-
- int ret = my_strcmp(str1, str2);
- if (ret == 0)
- printf("str1和str2相等\n");
- else if (ret > 0)
- printf("str1大于str2\n");
- else
- printf("str1小于str2\n");
-
- return 0;
- }