好久没来这边了,请教一下个人觉得比较怪的问题
////////////////////////////////////////////////////////////////////
//(1)error
int CountContinueCharMaxNum( char *begin, char *end, char *charSet )
{
int maxNum = 0;
int num = 0;
while( begin < end )
{
if( strchrupr( charSet, *begin ) )
{
num++;
if( num > maxNum )
{
maxNum = num;
}
}
else
{
num = 0;
}
begin++;
}
return maxNum;
}
int NumOfSpecifyChar( char *begin, char *end, char *charSet )
{
int num = 0;
while( begin < end )
{
if( strchrupr( charSet, *begin ) )
{
num++;
}
begin++;
}
return num;
}
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//(2)right
int CountContinueCharMaxNum( char *begin, int len, char *charSet )
{
int maxNum = 0;
int num = 0;
int i = 0;
while( i < len )
{
if( strchrupr( charSet, begin[i] ) )
{
num++;
if( num > maxNum )
{
maxNum = num;
}
}
else
{
num = 0;
}
i++;
}
return maxNum;
}
int NumOfSpecifyChar( char *begin, int len, char *charSet )
{
int num = 0;
int i = 0;
while( i < len )
{
if( strchrupr( charSet, begin[i] ) )
{
num++;
}
i++;
}
return num;
}
////////////////////////////////////////////////////////////////////
如有字符串text,长度len
(1)调用 CountContinueCharMaxNum( text, text+len,"!@#$%^&*" );
NumOfSpecifyChar( text, text+len, "!@#$%^&*" );
(2)调用 CountContinueCharMaxNum( text, len,"!@#$%^&*" );
NumOfSpecifyChar( text, len, "!@#$%^&*" );
在debug下,两(1),(2)运行都正确
在release下:(1)错误,(2)正确
我想问一下(1)的这种写法是错误的吗?还是受到其它函数的影响才产生错误的呢?