Compartir vía


Asignación de caracteres

Considere el ejemplo siguiente, en el que el bucle while examina una cadena, copiando todos los caracteres excepto "X" en otra cadena:

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

El código copia el byte en sz2 en la ubicación a la que apunta sz1 y, a continuación, incrementa sz1 para recibir el siguiente byte. Pero si el siguiente carácter sz2 es un carácter de doble byte, la asignación de sz1 solo copia el primer byte. El código siguiente usa una función portátil para copiar el carácter de forma segura y otra para incrementar sz1 y sz2 correctamente:

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

Consulte también

Sugerencias de programación para MBCS
Comparación de caracteres