Dela via


Teckentilldelning

Tänk dig följande exempel, där loopen while genomsöker en sträng och kopierar alla tecken utom X till en annan sträng:

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

Koden kopierar bytet vid sz2 till den plats som sz1 pekar på, och sedan ökar sz1 för att ta emot nästa byte. Men om nästa tecken i sz2 är ett dubbelbytetecken kopierar tilldelningen till sz1 endast den första byte. Följande kod använder en bärbar funktion för att kopiera tecknet på ett säkert sätt och en annan för att öka sz1 och sz2 korrekt:

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

Se även

MBCS-programmeringstips
Teckenjämförelse