1

バイナリ データを含む文字列があります。文字列のサイズは 4 です。他の関数がデータを書き込みます。毎回、以下のようにデータのサイズが異なりますが、

buf[0] = '\037';
buf[1] = buf[2]=buf[3] ='\000';

また

buf[0] = '\037';
buf[1] =  '\045';
buf[2]=buf[3] ='\000';

文字列の長さを取得すると、上記の場合はそれぞれ 1 と 2 になります。すべての場合で文字列の長さを 4 にしたい。

エンディングキャラはどう対処すればいいですか?

4

2 に答える 2

3

すべてのC文字列関数は、NULLバイト'\0'が文字列の終わりを示すと想定しています。NULLバイトをコンテンツとして持つ文字列を使用して、標準のC文字列関数を使用することはできません。

独自の文字列システムを構築する必要があります。文字列がどこで終わるかを把握するために、他の方法が必要になることに注意してください。

于 2013-03-15T07:00:18.137 に答える
-2

二重引用符を使用して文字列を初期化してみてください

buf[0] = "\037";
buf[1] = buf[2]=buf[3] ="\000";

初期化したのは、一重引用符付きの文字です

于 2013-03-15T07:33:01.843 に答える