メモリのチャンクを検索して文字列を探す必要がありますが、これらの文字列のいくつかでは、次のようにすべての文字がnullで区切ら
れ
ています。文字。私の問題は、これを実際にメモリに取り込むことから生じます。たとえば、私はいくつかの方法を試しました。
char* str2;
str2 = (char*)malloc(sizeof(char)*40);
memcpy((void*)str2, "123\0567\09abc", 12);
str2が指すメモリに次のように配置します。次のような123.7.9abc..
もの
str2 = "123456789\0abcde\054321";
は、str2が次のようなメモリのブロックを指すようにします123456789.abcde,321
。ここで、「。」はヌル文字であり、「、」は実際のコンマです。
したがって、ヌル文字をcstringに明確に挿入することは、改行文字を挿入するように、思ったほど簡単には機能しません。文字列ライブラリでもこれを試してみると、同様の問題が発生しました。次のように、個別の割り当てを行うことができます。
char* str;
str = (char*)malloc(sizeof(char)*40);
strcpy(str, "123");
strcpy(str+4, "abc");
strcpy(str+8, "ABC");
しかし、それは確かに好ましくありません。問題は、cスタイルの文字列がメモリにどのように格納されるかを理解していることにあると思います。明らかに、「abc \ 0123」は実際には61 62 63 00 31 32 33
(16進数で)メモリに入れられません。どのように保存され、必要なものをどのように保存できますか?
(コードをブロックに設定しなかったこともお詫びします。質問を投稿するのはこれが初めてです。どういうわけか、「4間隔」は、どうやら私が処理できるよりも難しいです。ありがとう、Luchian。もっと改行が必要だったと思います。)