字符赋值

请考虑以下示例,其中 while 循环会扫描字符串,将除“X”以外的所有字符复制到另一个字符串中:

while( *sz2 )
{
    if( *sz2 != 'X' )
        *sz1++ = *sz2++;
    else
        sz2++;
}

代码将 sz2 处的字节复制到 sz1 指向的位置,然后递增 sz1 来接收下一个字节。 但是,如果 sz2 中的下一个字符是双字节字符,则对 sz1 赋值将仅复制第一个字节。 以下代码使用一个可移植函数来安全地复制字符,使用另一个函数来正确地递增 sz1sz2

while( *sz2 )
{
    if( *sz2 != 'X' )
    {
        _mbscpy_s( sz1, 1, sz2 );
        sz1 = _mbsinc( sz1 );
        sz2 = _mbsinc( sz2 );
    }
    else
        sz2 = _mbsinc( sz2 );
}

另请参阅

MBCS 编程提示
字符比较