0

ディレクトリを再帰的に出力できるプログラムを書いています。以下はgdbデバッグセグメントです

「if (dr == NULL) {」に進む前の d_path (const char * が print_dir_tree にパラメーターとして渡される) は「/home/cifer/.gftp」であることに注意してください。ただし、「/home/」と出力されます。 cifer/!\200" この句の後に

誰が理由を教えてくれますか? どうもありがとう!

Breakpoint 1, print_dir_tree (d_path=0x805b058 "/home/cifer/.gftp", depth=4)

    at dir_demo.c:15

15      DIR *dr = opendir(d_path);

(gdb) print d_path

$2 = 0x805b058 "/home/cifer/.gftp"

(gdb) print d_path

$3 = 0x805b058 "/home/cifer/.gftp"

(gdb) step

16      if (dr == NULL) {

(gdb) print d_path

$4 = 0x805b058 "/home/cifer/!\200"

(gdb) step

20      struct dirent *de = NULL;

(gdb) print d_path

$5 = 0x805b058 "/home/cifer/!\200"

(gdb) step

21      while((de = readdir(dr)) != NULL) {

(gdb) print d_path

$6 = 0x805b058 "/home/cifer/!\200"

(gdb) 
4

1 に答える 1

0

確実に伝えるにはコードを確認する必要がありますが、const を変更できるかどうかを尋ねている場合、答えは「はい」です。どのように変更できるかを尋ねる場合、それは簡単です。通常の変数と同じように扱われますが、変更されると警告が表示されます。変更しようとして警告を回避する場合は、変数をコピーしてから変更できます。

于 2012-06-05T20:45:00.647 に答える