文字の代入

更新 : 2007 年 11 月

次に、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 );
}

参照

概念

MBCS のプログラミングについて

文字の比較