十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
strcmp()函数原型是
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网络空间、营销软件、网站建设、弓长岭网站维护、网站推广。
int strcmp(const char *s1,const char *s2)
如果s1的字符串在机器编码顺序中落后于s2,函数返回值是一个大于0的整数;如果两个字符串相同的话,返回值是0;如果第一个字符串在机器编码顺序中先于第二个字符串,返回值是一个<0的数。
看函数的返回值类型是 int,那么你就可以定义一个int 值来表示,例如
int cmp=strcmp(s1,s2)
cmp0说明s2s1;
cmp=0说明s2=s1;
cmp0说明s2s1;
或者可以直接使用
if(strcmp(str1,str2))
作为判断条件。
#include stdio.h
int strocmp(char* s1, char *s2)
{
int i;
for(i = 0; s1[i] s2[i]; i++) {
if(s1[i] s2[i])
return -1;
else if(s1[i] s2[i])
return 1;
}
if(s1[i] s2[i])
return -1;
else if(s1[i] s2[i])
return 1;
return 0;
}
main()
{
char s1[32], s2[32];
while(1) {
gets(s1);
if(s1[0] == 0)
break;
gets(s2);
printf("%d\n", strocmp(s1, s2));
}
}
C语言中strcmp函数是string库的常用函数。其原型代码和介绍如下:
1.先说一下这个函数的实现原理,向strcmp()函数中传入两个字符串(记为str1,str2).传入之后,通过把str1的各字母的ASCII码值和str2的各字母的ASCII码值进行比较。若str1str2则返回正数,若str1=str2则返回0,否则,则返回负数。
2.下面实现代码:
3.整个函数的原型中得益于“(*str1!='\0')(*str1==*str2)”这一句的代码,因为这样当字符指针指向空,意味着字符串已经移动到最后了,比较结束,此时可以退出循环。而如果两个字符串不相等时,则此时函数也可以退出了。
扩展资料:
这个函数要注意一下几点:
①使用*(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函数
1、strcpy:字符串复制,比如:设str1,str2是字符串指针,strcpy(str1,"asdg")或者strcpy(str1,str2)这样都可以,用法是把后者复制到前者,要注意的是前者不能是常量指针,比如“sdffsd”这样的。
2、strcmp:用法与上面差不如,不过没有常量的限制,作用是比较两个字符串大小,大于返回大于正数,小于返回负数,相等返回0。
3、两者包含在string.h头文件中
4、此外还有strstr,strcat等比较有用的函数,多找些字符串的代码看一下,然后找些题写一下就明白 了