字符串的比较

C语言中对字符的比较依赖的是字符的编码,默认使用了ASCII作为编码标准,每一个字符都对应了一个整数值。比如字符'0’的ASCII值是48,'A’的ASCII值是65,'a’的ASCII值是97。字符之间大小比较时,会对它们的编码值进行比较,'A'是小于'B'的,'A'是小于'a'等等。

那么字符串之间可以比较大小吗?字符串"China"与"America"哪个大呢?

这个回答是肯定的,在 C 语言中,我们通常遵循的是一种特殊的定义——字典序。

我们通过例子理解下字典序:

对于字符串"abc"和"bbc"的大小关系——我们首先会对它们的第一个字符进行比较, 我们发现第一个字符'a' < 'b'时,我们就可以明确"abc" < "bbc"的结论。

对于字符串"abc"和"abd"的大小关系——我们首先会对它们的第一个字符进行比较,如果第一个字符相同,则会接下来比较第二个字符;如果第二个字符相同,则会接下来比比较第三个字符;当我们发现第三个字符'c' < 'd'时,我们就得到了"abc" < "abd"的结论。

对于字符串"abc"和"ab"的大小关系——我们首先会对它们的第一个字符进行比较,如果第一个字符相同,则会接下来比较第二个字符;如果第二个字符相同, 则会接下来比较第三个字符;当我们发现"ab"没有第三个字符时,我们就得到了"ab" < "abc"的结论。

通过例子,我们可以总结:

字典序遵循的是逐字符比较的方式,越靠左的字符越会被先比较。

逐字符比较过程中,一旦发现某一对被比较的字符之间不相等时,这一对字符的大小关系即为这一对字符串的大小关系。

逐字符比较过程中,一旦出现某一个字符串的所有字符都已经经过比较,而另一字符串还存在未被比较的字符时,较短的字符串更小。

如果所有字符串内的字符都被发现相等,则这两个字符串相等。

因此,我们也可以回答前面的问题啦!字符串"China"是大于"America"的。

老师希望通过程序比较两个字符串的大小,小可爱们,你们可以帮助他吗?

在处理字符串的标准库中,有一个函数strcmp(表示 string compare)用于比较字符串。

#include <stdio.h>

int main()

{

char string[100] = "hello";

char input1[100] = "He";

char input2[100] = "hello";

char input3[100] = "zoo";

if(strcmp(input1,string)

{

printf("\"%s\" is less than \"%s\"\n",input1,string);

}

if(strcmp(input2,string)

{

printf("\"%s\" equals \"%s\"\n",input2,string);

}

if(strcmp(input3,string)

{

printf("\"zoo\" is greater than \"hello\"\n"); }

return 0;

}

要求输出结果为:

1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值