有库函数strcmp可以实现比较字符串的功能,如a<b,aa<ab,aaa<b,12<13,12<3等。也可能自定义函数实现类似功能。
先是比较两个字符串的第一个字符,如果都不是字符'\0',且相等,则指针后移,比较第二个字符……直到有一个指针指向'\0'或两个字符不相等,则比较大小或长度。
运行结果
请输入第一个字符串:
123
请输入第二个字符串:
112
123 > 112
源码:
#include <stdio.h>
#include <string.h>
int mystrcmp(const char *str1,const char *str2)
{
if(str1==NULL || str2==NULL)
{
printf("The string is error!\n");/*非法的字符串比较,程序终止*/
exit(0);
}
while(*str1!='\0' && *str2!='\0' && *str1 == *str2)
{
str1++;/*将两个字符串从头开始逐个字符进行比较*/
str2++;
}
if(*str1 != '\0' && *str2 == '\0')
{
return 1;/*字符串str2已经比较到了结尾,而字符串str1还没有到结尾*/
}
else if(*str1 == '\0' && *str2 != '\0')
{
return -1;/*字符串str1已到结尾,而字符串str2还没有到结尾*/
}
else if(*str1 > *str2)
{
return 1;/*字符串str1中的字符大于str2中的字符*/
}
else if(*str1 < *str2)
{
return -1;/*字符串str1中的字符小于str2中的字符*/
}
return 0;/*字符串相等,返回0*/
}
void main() {
char str1[20], str2[20];
printf("请输入第一个字符串:\n");
scanf("%s",str1);
printf("请输入第二个字符串:\n");
scanf("%s",str2);
if (strcmp(str1,str2)>0) {
printf("%s > %s\n", str1,str2);
} else if(strcmp(str1,str2)<0) {
printf("%s < %s\n", str1,str2);
} else {
printf("%s = %s\n", str1,str2);
}
system("pause");
}
-End-