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