首页技术strcmp实现,strcmp的原理

strcmp实现,strcmp的原理

编程之家2026-06-28801次浏览

今天给各位分享strcmp实现的知识,其中也会对strcmp的原理进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

strcmp实现,strcmp的原理

C语言strcmp函数是什么样的代码

C语言中strcmp函数是string库的常用函数。其原型代码和介绍如下:

1.先说一下这个函数的实现原理,向strcmp()函数中传入两个字符串(记为str1,str2).传入之后,通过把str1的各字母的ASCII码值和str2的各字母的ASCII码值进行比较。若str1>str2则返回正数,若str1=str2则返回0,否则,则返回负数。

2.下面实现代码:

3.整个函数的原型中得益于“(*str1!='\0')&&(*str1==*str2)”这一句的代码,因为这样当字符指针指向空,意味着字符串已经移动到最后了,比较结束,此时可以退出循环。而如果两个字符串不相等时,则此时函数也可以退出了。

扩展资料:

这个函数要注意一下几点:

strcmp实现,strcmp的原理

①使用*(unsigned char*)str1而不是用*str1。这是因为传入的参数为有符号数,有符号字符值的范围是-128~127,无符号字符值的范围是0~255,而字符串的ASCII没有负值,若不转化为无符号数这回在减法实现时出现错误。

②While循环中ret=*(unsigned char*)str1-*(unsigned char*)str2)&&*str1,最后与上str1也可以换成str2,因为前面已经做了相减,无论哪个先为‘\0’都会退出。因为最后与上str1是为了判断str1是否结束,即是否为‘\0’。

③这个函数没有判断参数为NULL时的情况,所以当传入NULL时程序会崩溃。网上看别人说商业化代码都会在调用strcmp前先判断是否为NULL,所以可以不用判断NULL;我在VC6上测试string.h中的strcmp(NULL,NULL),程序也会崩溃。这里可以根据实际情况来决定。

参考资料来源:百度百科-strcmp函数

strcmp()函数怎么用

字符串比较函数,一般形式为strcmp(字符串1,字符串2)。

比较规则:

strcmp实现,strcmp的原理

对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到‘\0’为止。如果全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。

如果两个字符串都由英文字母组成,则有一个简单的规律:在英文字典中位置在后面的为“大”,还要特别注意:小写字母比大写字母“大”。

返回值:

(1)字符串1=字符串2,返回0

(2)字符串1>字符串2,返回一个正整数

(3)字符串1<字符串2,返回一个负整数。

扩展资料:

规则

当s1<s2时,返回为负数;

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

当s1>s2时,返回正数。

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

"A"<"B""a">"A""computer">"compare"

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

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

Return Value

Returns an integral value indicating the relationship between the strings:

return value<0 the first character that does not match has a lower value inptr1than inptr2

return value=0 the contents of both strings are equal

return value>0 the first character that does not match has a greater value inptr1than inptr2

当两个字符串不相等时,C标准没有规定返回值会是1或-1,只规定了正数和负数。有些实现会返回1或-1,但将返回值与1或-1做比较的人,都是不合格的程序员。

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

参考资料:百度百科-strcmp

strcmp函数是怎样用的

strcmp函数用法:

strcmp()用来比较字符串(区分大小写),其原型为:intstrcmp(constchar*s1,constchar*s2);s1,s2为需要比较的两个字符串。

字符串大小的比较是以ASCII

码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1第一个字符值减去s2第一个字符值,若差值为0

则再继续比较下个字符,若差值不为0则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。

举例:

#include<string.h>

main(){

char*a="aBcDeF";

char*b="AbCdEf";

char*c="aacdef";

char*d="aBcDeF";

printf("strcmp(a,b):%d

",strcmp(a,b));

printf("strcmp(a,c):%d

",strcmp(a,c));

printf("strcmp(a,d):%d

",strcmp(a,d));

}

输出结果:

strcmp(a,b):32

strcmp(a,c):-31

strcmp(a,d):0

扩展资料:

strcmp使用规则:

一、当两个字符串不相等时,C标准没有规定返回值会是1或-1,只规定了正数和负数。有些实现会返回1或-1,但将返回值与1或-1做比较的人,都是不合格的程序。

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

参考资料来源:百度百科—strcmp

strcmp实现的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于strcmp的原理、strcmp实现的信息别忘了在本站进行查找哦。

input属性name(html5 input标签的用途)substr函数返回值?函数可以没有返回值