1. strcmp函数
函数原型:
int strcmp (const char *cs,const char *ct)
{
unsigned char c1, c2;
while(1)
{
c1=*cs++;
c2=*ct++;
if(c1 != c2)
return c1 < c2 ? -1 : 1;
if(!c1)
break;
}
return 0;
}
功能:比较两个字符串
参数:@cs 比较的源字符串
@ct 比较的目的字符串
返回值:相等,返回0
cs比ct小,返回-1
cs比ct大,返回1
缺点:没有检查传入的参数是否为空,引入临时变量
改进的strcmp函数:
int strcmp (const char *cs,const char *ct)
{
assert(cs);
assert(ct);
while(1)
{
if(*cs != *ct)
return *cs < *ct ? -1 : 1;
if( !(*cs) )
break;
cs++;
ct++;
}
return 0;
}
注意:加入assert函数需要包含assert.h这个头文件
2. strncmp函数
函数原型:
int strncmp(const char *cs, const char *ct, size_t count)
{
unsigned char c1, c2;
while(count)
{
c1=*c1++;
c2=*c2++;
if( c1 != c2 )
return c1 < c2 ? -1 : 1;
if( !c1 )
break;
count--;
}
return 0;
}
功能:比较两个字符串的前count位
参数:@cs 比较的源字符串
@ct 比较的目的字符串
@count 比较字符串的位数
返回值:相等,返回0
cs比ct小,返回-1
cs比ct大,返回1
缺点:没有检查传入的参数是否为空,引入临时变量
改进的strncmp函数:
int strncmp(const char *cs, const char *ct, size_t count)
{
assert(cs);
assert(ct);
while(count)
{
if( *cs != *ct )
return *cs < *ct ? -1 : 1;
if( !(*cs) )
break;
cs++;
ct++;
count--;
}
return 0;
}
注意:加入assert函数需要包含assert.h这个头文件