Atribuição de caractere
Considere o exemplo a seguir, em que o loop de while examina uma cadeia de caracteres, copiando todos os caracteres exceto “X” em outra cadeia de caracteres:
while( *sz2 )
{
if( *sz2 != 'X' )
*sz1++ = *sz2++;
else
sz2++;
}
O código copia bytes no sz2 ao local apontado por sz1, a seguir incrementa sz1 para receber o byte seguir. Mas se o próximo caractere em sz2 é um caractere de byte duplo, a atribuição a sz1 copia só o primeiro byte. O código a seguir usa uma função portátil para copiar segurança com o caractere e outro para incrementar corretamente sz1 e sz2 :
while( *sz2 )
{
if( *sz2 != 'X' )
{
_mbscpy_s( sz1, 1, sz2 );
sz1 = _mbsinc( sz1 );
sz2 = _mbsinc( sz2 );
}
else
sz2 = _mbsinc( sz2 );
}