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


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

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

См. также

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