C文字列を使用して複数のヌル文字\x00を含める方法。
質問する
1135 次
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 に答える