3

C文字列を使用して複数のヌル文字\x00を含める方法。

4

3 に答える 3

9

C の文字列関数 ( strlen()printf()など) は、バッファが null で終了することを前提としています。複数の 0x00 文字を含むバッファがある場合、0x00 をヌル文字として扱う関数は使用できません。

したがって、たとえばstrcpy()(またはstrncpy()) を使用する代わりmemcpy()に、この null で終了する動作に依存するのではなく、メモリのバイトをある場所から別の場所に移動するために - を使用します。

于 2013-01-20T17:51:56.840 に答える
3

AC 文字列は、ヌル文字で終了する文字の配列のみです。ただし、配列として扱う場合は、内部にヌル文字を含めることができます。

char data[4] = { 'x', '\0', 'y', '\0' };

ただし、最初のヌル文字で終わる C 文字列を想定しているため、ほとんどの標準ライブラリ関数は機能しないため、注意が必要です。

たとえば、strlen(data)上記の例では、最初のヌル文字の後で停止するため、1 が返されます。

于 2013-01-20T17:51:24.037 に答える
2

あなたがしなければならないのは、次のようなものです

char* data = (char*)malloc( 8 ) ; // allocate space for 8 bytes
memset( data, 0, 8 ) ; // set all 8 bytes to 0's 
于 2013-01-20T17:48:42.673 に答える