strmcp函数C语言,strcmp

strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根据比较结果返回整数。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1str2,则返回正数。[1-2]

中文名

strcmp

外文名

strcmp

类    别

库函数功    能

比较字符串s1和s2

头文件

一般形式

strcmp(字符串1,字符串2)

strcmp语法

编辑

extern int strcmp(const char *s1,const char *s2);

4c213aa4160cf99dd89913035eea487e.png

strcmp说明

编辑

规则

当s1

当s1=s2时,返回值= 0;

当s1>s2时,返回正数。[2]

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

1."A"

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

ANSI标准规定,返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。[3]当两个字符串不相等时,C标准没有规定返回值会是1 或 -1,只规定了正数和负数。

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

strcmp代码

编辑

#include 

#include 

#undef strcmp

int strcmp(p1,p2)

{

const char *p1;

const char *p2;

register const unsignedchar *s1=(const unsignedchar*)p1;

register const unsignedchar *s2=(const unsignedchar*)p2;

unsigned reg_charc1,c2;

do

{

c1=(unsigned char)*s1++;

c2=(unsigned char)*s2++;

if(c1=='\0')

returnc1-c2;

}

while(c1==c2);

return c1-c2;

}

libc_hidden_builtin_def(strcmp)

//以上代码是K&R C规范的,ASCI C的在下面

/*strcmp function*/

#include 

int(strap)(const char *sl,const char *s2)

{

/*compare unsigned char sl[],s2[]*/

for(;*sl==*s2;++sl,++s2)

if(*sl=='\0')

return(0);

return((*(unsignedchar*)sl

}strcmp另外的源代码如下:

int __cdecl strcmp(const char *src,const char *dst)

{

int ret=0;

while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)

++src,++dst;

if(ret<0)

ret=-1;

else if(ret>0)

ret=1;

return(ret);

}还有一种模拟算法:

int strcmp(const char * src, const char * dst)

//字典序比较两字符串大小

{

int ret = 0 ;

while(!(ret=*src-*dst)&&*dst)   //相等且没有结束

++src, ++dst;

return( ret );

}

strcmp源码

编辑

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

{

/*不可用while(*str1++==*str2++)来比较,当不相等时仍会执行一次++,

return返回的比较值实际上是下一个字符。应将++放到循环体中进行。*/

while(*str1 == *str2)

{

assert((str1 != NULL) && (str2 != NULL));

if(*str1 == '\0')

return 0;

str1++;

str2++;

}

return *str1 - *str2;

}

strcmp示例1

#include 

#include 

int main()

{

char string[20];

char str[3][20];

int i;

for(i=0;i<3;i++)

gets(str[i]);

if(strcmp(str[0],str[1])>0)

strcpy(string,str[0]);

else

strcpy(string,str[1]);

if(strcmp(str[2],string)>0)

strcpy(string,str[2]);

printf("\nThe largest string is%s\n",string);

return 0;

}

strcmp示例2

(TC中运行通过)//strcmp.c

#include 

#include 

intmain()

{

char *s1="Hello,Programmers!";

char *s2="Hello,programmers!";

int r;

clrscr();

r = strcmp(s1,s2);

if(!r)

printf("s1 and s2 are identical");

else if(r<0)

printf("s1 less than s2");

else

printf("s1 greater than s2");

getchar();

return 0;

}

strcmpphp应用示例

编辑

strcmp:进行二进制安全字符串比较[4]

示例:<?php

$var1="Hello";

$var2="Hello";

if(strcmp($var1,$var2)==0)

{echo'相等';

}

else     {

echo'不相等';

}

?>

strcasecmp:二进制安全比较字符串(不区分大小写)[5]int strcasecmp(string$str1,string$str2)str1

第一个字符串。

str2

第二个字符串。

返回值: 如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

示例 :<?php

$var1="Hello";

$var2="hello";

if(strcasecmp($var1,$var2)==0){

echo'$var1isequalto$var2inacase-insensitivestringcomparison';

}

?>

词条图册

更多图册

参考资料

1.

张建辉,叶刚.脑动力 PHP函数速查效率手册:电子工业出版社, 2012.10

2.

张权. Objective-C函数速查实例手册:人民邮电出版社, 2014.2

3.

陈超. C语言常用函数速查手册:化学工业出版社,2010.6

4.

列旭松,陈文.PHP核心技术与最佳实践(第2版): 机械工业出版社,2018.9

5.

张建辉,叶刚. 脑动力 PHP函数速查效率手册: 电子工业出版社,2012.10

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值