问题阐述
字符串的比较,就是看两个字符串哪个大,哪个小。比较的原则是对两个字符串进行逐个字符的比较。直到有不相等的字符为止。例:
“abcd”
“abxa”
这两个字符串哪个大呢。两个字符串前两个字符相同,第三个字符按Ascii比较c小于x,因此,整个字符串“abcd”小于“abxa”。
以上是字符串比较的原则,那么C语言中要想做这样的比较,应该怎样去操作呢?
专家解答
字符串比较使用strcmp函数。其语法格式如下。
strcmp(字符数组名1,字符数组名2)
功能:字符串比较就是将一个字符串与另一个字符串从首字母开始,按照ASCII码的顺序进行逐个比较,直到两个字符串的ASCII顺序不相等或者遇到结束标志“\0”时结束比较,并由函数返回值返回比较结果。
返回值如下。
q 字符串1=字符串2,返回值为0。
q 字符串1>字符串2,返回值为一正数。
q 字符串1
在strcmp()函数字符串比较中,字符串1和字符串2不但可以是字符数组,也可以是字符串常量。
其实,strcmp的结果就是当两个字符串进行比较的时侯若出现不同的字符,则以第一个不同的字符的比较结果作为整个比较的结果。
使用strcmp函数,必须包含string.h头文件。
下面通过实例来介绍一下strcmp函数的使用。
实例中,在main函数体中定义4个字符数组,分别用来存储用户名、密码和用户输入的用户名及密码字符串,然后分别调用strcmp函数比较用户输入的用户名和密码是否正确。代码如下:
#include
#include
int main()
{
char yhm[20]= {"mrkj"}; /*设置用户名字符串*/
char mima[20] = {"111"}; /*设置密码字符串*/
char yhm1[20],mima1[20];
int i=0;
while(i
{
printf("输入用户名字符串:\n");
gets(yhm1); /*输入用户名字符串*/
printf("输入密码字符串:\n");
gets(mima1); /*输入密码字符串*/
if(strcmp(yhm,yhm1)) /*如果用户名字符串不相等*/
{
printf("用户名字符串输入错误!\n"); /*提示用户名字符串输入错误*/
}
else /*用户名字符串相等*/
{
if(strcmp(mima,mima1)) /*如果密码字符串不相等*/
{
printf("密码字符串输入错误!\n"); /*提示密码字符串输入错误*/
}
else /*用户名和密码字符串都正确*/
{
printf("欢迎使用!\n"); /*输出欢迎字符串*/
break;
}
}
i++;
}
if(i == 3)
{
printf("输入字符串错误3次!\n"); /*输入字符串错误3次*/
}
return 0; /*程序结束*/
}
运行程序,字符串比较效果如图9.3所示。
图9.3 字符串比较
专家点评
字符串的比较不能用关系运算符>、
关于【C语言编程锦囊】,可能你还想知道:
领取专属 10元无门槛券
私享最新 技术干货