strcmp
是 C 语言标准库中的一个函数,用于比较两个字符串的大小。它定义在 <string.h>
头文件中。strcmp
函数按照字典顺序(即 ASCII 值顺序)比较两个字符串,并返回一个整数值来指示比较结果。
函数原型
int strcmp(const char *str1, const char *str2);
参数
str1
:指向要比较的个字符串。str2
:指向要比较的第二个字符串。
返回值
- 负值:如果
str1
小于str2
。 - 零:如果
str1
等于str2
。 - 正值:如果
str1
大于str2
。
比较规则
- 逐字符比较:
strcmp
从字符串的个字符开始,逐个字符地进行比较,直到遇到不同的字符或遇到字符串的终止符\0
。 - ASCII 值:比较基于字符的 ASCII 值。例如,字符
'A'
的 ASCII 值是 65,而'a'
的 ASCII 值是 97,因此'A'
小于'a'
。 - 长度影响:如果一个字符串是另一个字符串的前缀,则较短的字符串被视为较小。例如,
"abc"
小于"abcd"
。
示例代码
```c
include
include
int main() {
const char *str1 = "apple";
const char *str2 = "banana";
const char *str3 = "apple";
int result1 = strcmp(str1, str2);
int result2 = strcmp(str1, str3);
int result3 = strcmp(str2, str1);
printf("strcmp(str1, str2) = %d\n", result1); // 输出负值,因为 "apple" < "banana"
printf("strcmp(str1, str3) = %d\n", result2); // 输出0,因为 "apple" == "apple"
printf("strcmp(str2, str1) = %d\n", result3); // 输出正值,因为 "banana" > "apple"
return 0;
}
```
注意事项
strcmp
函数区分大小写。如果需要不区分大小写的比较,可以使用strcasecmp
(POSIX 标准,非标准 C 库)或手动转换为相同大小写后比较。- 确保传递给
strcmp
的指针指向有效的以\0
结尾的字符串,否则可能导致未定义行为。
通过 strcmp
,你可以方便地比较两个字符串,并根据返回值执行相应的逻辑操作。