c语言中比较两个字符串的大小

用comparison()
实现字符串的比较功能
从键盘输入一个字符串;调用函数comparison()
输出结果;

在C语言中比较字符串大小,可以使用库函数strcmp,也可以自己编写比较函数。 

1、使用库函数。 

需要包含头文件string.h。声明为:

int strcmp(const char *s1, const char *s2);

会根据字典序比较s1和s2, 如果二者相等,则返回0;如果s1较小则返回-1;如果s1较大则返回1。

比如

strcmp("123", "123") 结果为0。

strcmp("123", "456") 结果为-1。

strcmp("456", "123") 结果为1。

2、自定义函数。

实现字符串比较的方法有很多,其基本原理为按字节比较。

举例如下:

int my_strcmp(char *s1, char *s2)
{
    int i;
    for(i = 0; s1[i] == s2[i] && s1[i]!=0; i++);//循环比较,达到结束或者出现不相等值时退出循环。 
    
    if(s1[i] == s2[i]) return 0;//代表全部相等,返回0
    if(s1[i]<s2[i]) return -1;//s1较小,返回-1。
    return 1;//s1较大,返回1.
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-10-11
一:(这个调用了 string.h 头函数)
#include <stdio.h>
#include <string.h>

void comparision(char a[],char b[])
{
if(strcmp(a,b)>0) printf("a[40]>b[40]");
else if(strcmp(a,b)==0) printf("a[40]=b[40]");
else printf("a[40]<b[40]");
}
main(void)
{
char a[40],b[40];
gets(a);
gets(b);
comparision(a,b);
}

2:这个是普通方法 不调用函数strcmp();
#include <stdio.h>

int comparision(char a[],char b[])
{
int t,i=0;
while(a[i]!='\0'||b[i]!='\0')
{
if(a[i]==b[i]) t=0;
else if(a[i]>b[i]) t=1;
else t=-1;
if(t!=0) break;
i++;
}
return t;
}

main(void)
{
char a[40],b[40];
int k=0;
gets(a);
gets(b);
k=comparision(a,b);
if(k==1) printf("a[40]>b[40]");
else if(k==-1) printf("a[40]<b[40]");
else printf("a[40]=b[40]");
}本回答被网友采纳
第2个回答  2013-12-15
#include <stdio.h>

int comparison(char a[],char b[])
{
int i;
for(i=0;a[i]!='\0'||b[i]!='\0';i++)
{
if(a[i]>b[i]) return 1;
else if(a[i]<b[i]) return -1;
}
if(a[i]=='\0'&&b[i]=='\0') return 0;
if(a[i]=='\0') return -1;
return 1;
}

void main()
{
char a[100],b[100];
int t;
printf("请输入两个字符串:\n");
scanf("%s%s",a,b);
t=comparison(a,b);
if(t==1) printf("%s > %s",a,b);
else if(t==-1) printf("%s < %s",a,b);
else printf("%s == %s",a,b);
printf("\n");
}
第3个回答  2013-12-15
int comparison(char *str1,char *str2)
{
while(*str1!='\0'&&*str1!='\0')
{ if(*str1==*str2)
{ str1++; str2++;
}
else return *str1-str2;
}
return 0;
}
第4个回答  2016-12-05
两个字符串s1和s2,若s1=s2时,返回值为0;若s1不等于s2时,返回它们二者第一个不同字符的ASCII码差值(如"BOY"与"BAD",第二个字母不同,"O"与"A"之差为79-65=14)。如果s1 > s2,则输出正值;如果s1 < s2,则输出负值。
答案:

#include<stdio.h>
#include<string.h>
#define N 30
void main()
{
char s1[N],s2[N];
int i,j=0;
puts("输入字符串s1:");
gets(s1);
puts("输入字符串s2:");
gets(s2);
for(i=0;(s1[i]!='\0')&&(s2[i]!='\0');i++)
{
j=s1[i]-s2[i];
if(j!=0)
break;
}
if((s1[i]=='\0')&&(s2[i]=='\0'))
printf("%d\n",j);
else
printf("%d\n",s1[i]-s2[i]);
}
相似回答