請參考課本上的範例程式,按照 readdir() 的順序即可;你上面說的情況,可能的
outputs 有五種,舉例如下(如果我數漏了,那就是我數錯了XD):
1. xx1 xx2 xx3 (xx1 先讀到,/a/a/ 在 link1 前先被讀到)。
2. xx1 xx3 xx2 (xx1 先讀到,/a/a/ 在 link1 後才被讀到)。
3. xx3 xx1 xx2 (先讀到 link1 ,再讀到 xx1,最後讀到 /a/a/)。
4. xx3 xx2 xx1 (兩種可能:先讀到 link1 ,再讀到 /a/a/,最後讀到 xx1;先讀到
a/a/ ,再讀到 a/a/a/ ,所以先找到 xx3 ,回到 a/a/ ,找到 xx2,最後找到 xx1)。
5. xx2 xx3 xx1 (先讀到 /a/a/ ,所以繼續走下去讀到 xx3 ,然後回到 /a/ 讀到
xx1 ,讀到 link1 時因為它指到的地方走過了,所以停止)。
(如果我沒算錯,應該沒有 xx2 xx1 xx3)
總之按照 readdir() 給的走下去就對了。
> 還有 link有可能會跳到開始的資料夾之上嗎 如"/"
會,這是一種 loop ,程式裡要避免,因為每個檔案只可以印一次,而且程式不能陷入無
窮迴圈。
>
> 拜託助教解答囉!
>
助教 張文賢
******助教回的信 我PO上來給大家參考******
※ 引述《rangerx (^^")》之銘言:
: 拜託各位同學幫我解答orz
: 如果有資料夾如下
: /a/ 其中有檔案xx1 和symbolic link "link1" link to "a\a\a\"
: /a/a/ 其中有xx2
: /a/a/a/ 其中有xx3
: 如果我搜尋xx 由"/a/"開始
: 那顯示的順序該為xx1 xx2 xx3 或是 xx1 xx3 xx2呢
: spec上寫說印出時要DFS那是指資料夾結構的DFS 還是traverse的DFS順序壓
: 還有 link有可能會跳到開始的資料夾之上嗎 如"/"
: 拜託各位解答囉!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.251.178