文字で始まる文字列があります。\0
- 実際の長さはわかりました。gdbのNULで始まる印刷文字列
長さが分かっている場合は、"\0foo\0bar\0"
のようなエスケープを使用して表現を印刷するにはどうすればよいですか?
文字で始まる文字列があります。\0
- 実際の長さはわかりました。gdbのNULで始まる印刷文字列
長さが分かっている場合は、"\0foo\0bar\0"
のようなエスケープを使用して表現を印刷するにはどうすればよいですか?
さて、あなたは配列としてそれを印刷することができる必要があります:
print *[email protected]
あなたはGDBのprintfコマンドを使用することができます。
char *を1つインクリメントして印刷するだけで、NULL文字は表示されません。
次のコードがある場合:これは実際にNULL渡って印刷することができますので、
gdb test
(gdb) break main
(gdb) run
Breakpoint 1 at 0x100000f04: file test.c, line 3.
(gdb) si
1 char * s1 = "abcd";
(gdb) si
2 char * s2 = "\0abcd";
(gdb) printf "%s", s1
abcd
(gdb) printf "%s", s2+1
abcd
1:GDBを実行し
:
をして、あなたのプログラムをコンパイルします境界。 – gamen
+1も私が望んでいたものであった。 – Flavius
@gamen:NULとNULLを混同しないでください。前者は文字、後者はポインタです。 – Flavius