8.4.4 字符串比较函数
在C语言中,函数strcmp和函数strncmp是专门用于比较字符串大小的。函数strcmp的使用格式如下所示。
strcmp(字符串1,字符串2)
函数strncmp的使用格式如下所示。
strcmp(字符串1,字符串2,整型表达式)
其中,“字符串1”“字符串2”表示字符串常量或已存放字符串的字符数组名。
函数strcmp的功能描述如下所示。
❑ 如果“字符串1”<“字符串2”,则函数值为小于0的整数。
❑ 如果“字符串1”=“字符串2”,则函数值为0。
❑ 如果“字符串1”>“字符串2”,则函数值为大于0的整数。
函数strncmp的功能是比较字符串1和字符串2的前几个(具体个数由整型表达式指定)字符的大小。具体比较方式如下所示。
❑ 如果“字符串1”<“字符串2”,则函数值为小于0的整数。
❑ 如果“字符串1”=“字符串2”,则函数值为0。
❑ 如果“字符串1”>“字符串2”,则函数值为大于0的整数。
实例8-9
使用strcmp和函数strncmp比较用户输入的字符串
源码路径daima\8\8-9
本实例的实现文件为“compare.c”,具体实现代码如下。
#include "string.h" #include "stdio.h" int main(void){ int m; //声明整型变量 char mm1[80], mm2[80]; //声明两个字符数组 puts("Please input the first string:"); //输入提示 gets_s(mm1); //接收字符串1 puts("Please input the second string:"); //输入提示 gets_s(mm2); //接收字符串2 m=strcmp(mm1, mm2); //比较两个字符串 //输出结果 printf("\nstrcmp(%s, %s) returns %d", mm1, mm2, m); m=strncmp(mm1, mm2,3); //比较两个字符串的前3个字符 printf("\nComparing 3 characters, strncmp(%s, %s) returns %d", mm1, mm2, m); //输出结果 }
拓展范例及视频二维码
范例8-9-01:比较两个字符串
源码路径:演练范例\8-9-01\
范例8-9-02:自定义字符串比较函数
源码路径:演练范例\8-9-02\
程序运行后先提示用户分别输入两个字符串,输入完毕并按Enter键后,通过函数strcmp和函数strncmp比较两个字符串,并显示比较结果。执行效果如图8-9所示。
图8-9 执行效果
在上述实例代码中,通过函数strcmp和函数strncmp比较用户输入的字符串。读者在具体使用时,应该注意如下两点。
(1)函数strcpy和函数strncpy在进行比较时,要区分字母的大小写。
(2)在C语言中所有的字符串比较函数都是利用ASCII码来比较的,对于相同的字母来说,大写字母要小于小写字母。因为A~Z的ASCII码是95~90,而a~z的ASCII码是97~122。
看下面的代码。
#include "string.h" int main(){ int k; static char st1[15], st2[]="C Language"; //赋值 printf("input a string:\n"); gets(st1); k=strcmp(st1, st2); if(k==0) printf("st1=st2\n"); if(k>0) printf("st1>st2\n"); if(k<0) printf("st1<st2\n"); }
上述代码把输入的字符串和数组st2中的字符串进行比较,比较结果返回到k中,根据k值再输出结果。当输入为“ddddd”时,由ASCII码可知“ddddd”大于“C Language”,所以k>0,输出结果是st1>st2。