如题所述
第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++; }
}
它的原理可以用以下程序解释:
#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'为止。
兄弟可以去百科看一下这个函数的源代码,有助于加深理解。
兄弟可以去百科看一下这个函数的源代码,有助于加深理解。
第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本回答被网友采纳
/*
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本回答被网友采纳