strcmp函数这么写有什么漏洞?请指正
来源:百度知道 编辑:UC知道 时间:2024/06/26 03:58:00
int strcmp(const char *s1,const char *s2)
{
while(!(*++s1 - *++s2 ) && *s1 && *s2);
if(*s1 == '\0' || *s2 == '\0' )
s1 --,s2 --;
if(*s1 > *s2)
return 1;
else if(*s1 < *s2)
return -1;
else
return 0;
}
我不知道如何自测才能知道我这个函数一点问题都没有,我自己看不出来,请大家看一下
{
while(!(*++s1 - *++s2 ) && *s1 && *s2);
if(*s1 == '\0' || *s2 == '\0' )
s1 --,s2 --;
if(*s1 > *s2)
return 1;
else if(*s1 < *s2)
return -1;
else
return 0;
}
我不知道如何自测才能知道我这个函数一点问题都没有,我自己看不出来,请大家看一下
函数有很多问题:while(!(*++s1 - *++s2 ) && *s1 && *s2);要改为while(*s1 && *s2 && *s1++==*s2++);*s1和*s2一定要写在前面,否则第一个字符比较不出来。减法运算不好理解,所以改为*s1++==*s2++);
后面的语句if(*s1 == '\0' || *s2 == '\0' ) s1 --,s2 --;也要删除。
所以,最后形式为:
int strcmp(const char *s1,const char *s2)
{
while(*s1 && *s2 && *s1++==*s2++);
if(*s1>*s2)
return 1;
else if(*s1<*s2)
return -1;
else
return 0;
}
测试strCmp函数
关于strcmp函数
C++里面 strcmp(c1,c2) 这样改表什么? strcmp有什么作用的呀?
C语言中strcmp是什么意思?有什么功能和作用?
求教C++strcmp函数的用法???
php中strcmp函数是如何进行比较的?
编程:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能?
C语言编程:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和
3、用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能。
strlen,strcpy,strcat,strcmp,strstr各代表什么意思