Поделиться через


Присваивание символов

Обновлен: Ноябрь 2007

Рассмотрим следующий пример, в котором цикл 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 );
}

См. также

Основные понятия

Советы по программированию многобайтовой кодировки

Сравнение знаков