ポインターのインクリメントとデクリメント
次のヒントを参考にしてください。
末尾バイトでなく先行バイトをポイントします。 通常は、トレイルバイトへのポインターを持つことは安全ではありません。 通常、文字列は逆方向でなく前方にスキャンする方が安全です。
文字全体を移動するポインターインクリメント/デクリメント関数とマクロが用意されています。
sz1++;
を次に変更
sz1 = _mbsinc( sz1 );
_mbsinc
および_mbsdec
関数は、文字のサイズに関係なく、character
単位で適切にインクリメントおよびデクリメントします。デクリメントの場合、次に示すように、文字列の先頭へのポインターが必要です。
sz2--;
を次に変更
sz2 = _mbsdec( sz2Head, sz2 );
または、次のように、ヘッド ポインターが文字列内の有効な文字になる場合もあります。
sz2Head < sz2
既知の有効な先行バイトへのポインターを持っている必要があります。
_mbsdec
への呼び出しを高速化するために、前の文字へのポインターを維持することもできます。