字符赋值
请考虑以下示例,其中 while
循环会扫描字符串,将除“X”以外的所有字符复制到另一个字符串中:
while( *sz2 )
{
if( *sz2 != 'X' )
*sz1++ = *sz2++;
else
sz2++;
}
代码将 sz2
处的字节复制到 sz1
指向的位置,然后递增 sz1
来接收下一个字节。 但是,如果 sz2
中的下一个字符是双字节字符,则对 sz1
赋值将仅复制第一个字节。 以下代码使用一个可移植函数来安全地复制字符,使用另一个函数来正确地递增 sz1
和 sz2
:
while( *sz2 )
{
if( *sz2 != 'X' )
{
_mbscpy_s( sz1, 1, sz2 );
sz1 = _mbsinc( sz1 );
sz2 = _mbsinc( sz2 );
}
else
sz2 = _mbsinc( sz2 );
}