源**:
#include#include#include#include#include#includevoid printfdir(char *dir,int depth)
chdir(dir);
while ((entry=readdir(dp))!=null)
else printf("%*s%s\n",depth," ",entry->d_name);
}chdir("..");
closedir(dp);
}int main()
問題:為什麼while迴圈後要切換到上層目錄?遞迴完成後不是會自動回到上層麼。將31行注釋後發現雖然能輸出上層目錄包含的目錄或檔案,但均被識別為目錄,且包含的目錄不會進行遞迴。
原因:遞迴後程式確實跳回上層,所以能輸出上層目錄包括的目錄和檔案,但是由於lstat函式傳入的只是檔案或目錄的相對路徑,如果不將當前程式掃瞄目錄帶回上一級的話,它只會在下層掃瞄該檔名,但下層是沒有該檔案或目錄的。將傳給lstat函式的位址改為絕對路徑就沒問題了(一點不方便)
**如下:
#include#include#include#include#include#includevoid printfdir(char *dir,int depth)
chdir(dir);
while ((entry=readdir(dp))!=null)
else printf("%*s%s\n",depth," ",entry->d_name);
}// chdir("..");
closedir(dp);
}int main()
騰訊面試 Linux下如何掃瞄目錄
問題 在linux下,輸出某個資料夾下的檔案即其子目錄,以及子目錄下的檔案和資料夾。如下 include include include include include include include 值得注意的是 struct stat statbuf 1.如果宣告為 struct stat st...
Linux 檔案處理 之掃瞄目錄 DIR
3.8掃瞄目錄 linux 系統上乙個常見問題就是對目錄進行掃瞄,也就是確定乙個特定目錄下存放的檔案。在 shell 程式設計中,這很容易做到 只需讓 shell 做一次表示式的萬用字元擴充套件。過去,unix 作業系統的各種變體都允許使用者通過程式設計訪問底層檔案系統結構。我們仍然可以把目錄當作乙...
linux程式設計學習目錄
unix環境高階程式設計第三版 linux unix系統程式設計手冊 unix網路程式設計 第1卷 套介面api tcp ip詳解卷一 檔案i o 1 檔案io open close函式 2 c標準的i o快取和file結構體 3 檔案描述符和標準檔案 4 檔案描述符與開啟的檔案之間的關係 5 檔案...