首 页 行业热点 新车 试驾评测 养车用车 车型库

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

发布网友 发布时间:2022-04-23 06:15

我来回答

5个回答

热心网友 时间:2023-10-03 03:42

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

给出下面的例子;

#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;


}

热心网友 时间:2023-10-03 03:42

它是从第一个字母开始比较的,就是逐个比较字母呗,直到出现结果为止。这个比较与字符串的长度没有必然关系的。例如: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++; }
}

热心网友 时间:2023-10-03 03:43

两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止,如”abc"和“ad"比,先比较'a'和'a',一样大小,然后比较'b'和'd',因为'b'<'d'所以返回-1;

热心网友 时间:2023-10-03 03:43

两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
http://ke.baidu.com/view/1026924.htm
兄弟可以去百科看一下这个函数的源代码,有助于加深理解。

热心网友 时间:2023-10-03 03:42

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

给出下面的例子;

#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;


}

热心网友 时间:2023-10-03 03:44

#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

热心网友 时间:2023-10-03 03:42

它是从第一个字母开始比较的,就是逐个比较字母呗,直到出现结果为止。这个比较与字符串的长度没有必然关系的。例如: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++; }
}

热心网友 时间:2023-10-03 03:43

两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止,如”abc"和“ad"比,先比较'a'和'a',一样大小,然后比较'b'和'd',因为'b'<'d'所以返回-1;

热心网友 时间:2023-10-03 03:43

两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
http://ke.baidu.com/view/1026924.htm
兄弟可以去百科看一下这个函数的源代码,有助于加深理解。

热心网友 时间:2023-10-03 03:44

#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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com