c语言中strcmp函数 如果两个字符串长度不一样时要怎么比较大小啊?

如题所述

下次这些问题自己可以检验的,就别问了,多动手!

给出下面的例子;

#include<stdio.h>

#include<string.h>

int main()

{char a[5]="look";

 char b[7]="lookly";

 if(strcmp(a,b)>0)

printf("%s>%s\n",a,b);

 else

printf("%s<%s\n",a,b);

 return 0;


}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-05-06
它是从第一个字母开始比较的,就是逐个比较字母呗,直到出现结果为止。这个比较与字符串的长度没有必然关系的。例如:love>abandon.
它的原理可以用以下程序解释:

#include<stdio.h>
void main()
{
int i=0;
int c,d;
char a[100],b[100];
printf("输入第一串字符\n");
gets(a);
printf("输入第二串字符\n");
gets(b);
while(a[i]!='\0'&&b[i]!='\0')
{
c=a[i];
d=b[i];
if(c>d) {printf("%d\n",c-d);
break;}
if(c<d) {printf("%d\n",-(d-c));
break;}
i++; }
}
第2个回答  2013-05-05
两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止,如”abc"和“ad"比,先比较'a'和'a',一样大小,然后比较'b'和'd',因为'b'<'d'所以返回-1;
第3个回答  2013-05-05
两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
http://baike.baidu.com/view/1026924.htm
兄弟可以去百科看一下这个函数的源代码,有助于加深理解。
第4个回答  2013-05-05
#define debug

/*
this routine is made by elapser ;
*/

int elapser_strcmp (char* pstra ,char* pstrb)
{
if (pstra == 0 || pstrb == 0)
return 0 ;

while (*pstra != '\0' && *pstrb != '\0' && *pstra == *pstrb)
{
pstra++ ;
pstrb++ ;
}

return *pstra - *pstrb ;
}

#ifdef debug

int main ()
{
int elapser_strcmp (char* pstra ,char* pstrb) ;

char* pstra = "abcdefg" ;
char* pstrb = "abcd" ;
char* pstrc = "abcdefg" ;
char* pstrd = "abcdgg" ;

printf ("stra ? strb is %d\n" ,elapser_strcmp (pstra ,pstrb)) ;
printf ("stra ? strc is %d\n" ,elapser_strcmp (pstra ,pstrc)) ;
printf ("stra ? strd is %d\n" ,elapser_strcmp (pstra ,pstrd)) ;

return 0 ;
}

#endif本回答被网友采纳
相似回答