文字の代入
次に、while ループで文字列をスキャンし、"X" 以外の文字をすべて別の文字列へコピーする場合を考えてみます。
while( *sz2 )
{
if( *sz2 != 'X' )
*sz1++ = *sz2++;
else
sz2++;
}
このコードでは、sz2 で示されるバイトを sz1 が指す場所へコピーし、次のバイトに進めるために sz1 をインクリメントしています。ただし、sz2 の次の文字が 2 バイト文字である場合は、sz1 への代入では最初のバイトしかコピーされません。次のコードでは、移植性のある関数を使って文字を安全にコピーし、sz1 と sz2 を適切にインクリメントしています。
while( *sz2 )
{
if( *sz2 != 'X' )
{
_mbscpy_s( sz1, 1, sz2 );
sz1 = _mbsinc( sz1 );
sz2 = _mbsinc( sz2 );
}
else
sz2 = _mbsinc( sz2 );
}