文字の代入
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 );
}