两个字符串自左向右开始相比(按 ASCII 值大小相比较)
如果 str1 和 str2 相同位置 的 字符 的ASCII值相同
则比较 str1 和 str2 下一个 相同位置的字符 直到 相同位置 的字符 的ASCII值不相同
停止比较 根据 当前位置的字符 的ASCII值的大小 确定返回值
如果 str1 < str2 返回一个小于0的数
如果 str1 = str2 返回0
如果 str1 < str2 返回一个大于0的数
ASCII :
A == 65
a== 97
/0 ==0
c中字符串结尾实际上还有一个字符 '/0’作为结束符号 。
所以 “abc” <“abcA”
又有 “ac” > "abcdefg“ 是因为 ‘a’ == ‘a’ 比较下一个 ‘c’ > ‘b’ 故 “ac” > “abcdefg”
下面是自测代码
-
#include<stdio.h>
#include<string.h>
int main(void){
char str1[20];
char str2[20];
int ret;
while(scanf("%s%s",&str1,&str2) != EOF){// 按下 ctrl + z 结束输入
ret = strcmp(str1, str2);if(ret < 0)
{
printf("%s 小于 %s",str1,str2);
}
else if(ret > 0)
{
printf("%s 大于 %s",str1,str2);
}
else
{
printf("%s 等于 %s",str1,str2);
}
printf("\n");
}return 0;
}