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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;


参考技术A 它是从第一个字母开始比较的,就是逐个比较字母呗,直到出现结果为止。这个比较与字符串的长度没有必然关系的。例如: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++;
参考技术B 两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止,如”abc"和“ad"比,先比较'a'和'a',一样大小,然后比较'b'和'd',因为'b'<'d'所以返回-1; 参考技术C 两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。
http://baike.baidu.com/view/1026924.htm
兄弟可以去百科看一下这个函数的源代码,有助于加深理解。
参考技术D #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

C语言函数strcmp()(比较两个字符串)

C 库函数 - strcmp()

文章目录

描述

C 库函数 int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。

声明

下面是 strcmp() 函数的声明。

int strcmp(const char *str1, const char *str2)

参数

  • str1 – 要进行比较的第一个字符串。
  • str2 – 要进行比较的第二个字符串。

返回值

该函数返回值如下:

  • 如果返回值小于 0,则表示 str1 小于 str2。
  • 如果返回值大于 0,则表示 str1 大于 str2。
  • 如果返回值等于 0,则表示 str1 等于 str2。

实例

下面的实例演示了 strcmp() 函数的用法。

#include <stdio.h>
#include <stdlib.h>

int main()

    char str1[15];
    char str2[15];
    int ret;


    strcpy(str1, "abcdef");
    strcpy(str2, "ABCDEF");

    ret = strcmp(str1, str2);

    if (ret < 0)
    
        printf("str1 小于 str2");
    
    else if (ret > 0)
    
        printf("str1 大于 str2"); //str1 大于 str2
    
    else
    
        printf("str1 等于 str2");
    

    return(0);

注意

两个字符串自左向右逐个字符相比(按 ASCII 值大小相比较),直到出现不同的字符或遇 \\0 为止。如:

  1. “A”<“B”
  2. “A”<“AB”
  3. “Apple”<“Banana”
  4. “A”<“a”
  5. “compare”<“computer”

特别注意:strcmp(const char *s1,const char * s2) 这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。

ANSI 标准规定,返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。

当两个字符串不相等时,C 标准没有规定返回值会是 1 或 -1,只规定了正数和负数。

有些会把两个字符的 ASCII 码之差作为比较结果由函数值返回。但无论如何不能以此条依据作为程序中的流程逻辑。

参考文章:C 库函数 - strcmp()

以上是关于c语言中strcmp函数 如果两个字符串长度不一样时要怎么比较大小啊?的主要内容,如果未能解决你的问题,请参考以下文章

c语言中strcmp的用法

写一个strcmp函数,实现两个字符串的比较。 求注释。ORZ!

c语言中如何判断两个字符串相等

用strcmp函数怎么比较两个字符串的比较?

c语言编程 写一个函数,实现两个字符串的比较,即写一个类似于strcmp功能的函数。急求,谢谢!

c语言 怎么比较字符串中内容的大小,内容是数字