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;
它的原理可以用以下程序解释:
#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 为止。如:
- “A”<“B”
- “A”<“AB”
- “Apple”<“Banana”
- “A”<“a”
- “compare”<“computer”
特别注意:strcmp(const char *s1,const char * s2) 这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。
ANSI 标准规定,返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。
当两个字符串不相等时,C 标准没有规定返回值会是 1 或 -1,只规定了正数和负数。
有些会把两个字符的 ASCII 码之差作为比较结果由函数值返回。但无论如何不能以此条依据作为程序中的流程逻辑。
以上是关于c语言中strcmp函数 如果两个字符串长度不一样时要怎么比较大小啊?的主要内容,如果未能解决你的问题,请参考以下文章
写一个strcmp函数,实现两个字符串的比较。 求注释。ORZ!