#include #include #include using namespace std; #include "directory.h" #include "prompt.h" // print all entries in a directory (uses recursion) void Tab(int count) // postcondition: count tabs printed to cout { int k; for(k=0; k < count; k++) {cout << "\t"; } } void ProcessDir(const string & path, int tabCount) // precondition: path specifies pathname to a directory // tabCount specifies how many tabs for printing // postcondition: all files and subdirectories in directory 'path' // printed, subdirectories tabbed over 1 more than parent { DirStream indir(path); DirEntry entry; int num = 0; // number of files in this directory for(indir.Init(); indir.HasMore(); indir.Next()) { entry = indir.Current(); // either file or subdirectory // don't process self: ".", or parent directory: ".." if (entry.Name() != "." && entry.Name() != "..") { num++; Tab(tabCount); cout << "(" << setw(3)<< num << ")" << "\t" << entry.Name() << endl; if (entry.IsDir() ) // process subdir { ProcessDir(entry.Path(),tabCount+1); } } } } int main() { string dirname = PromptString("enter directory name "); ProcessDir(dirname,0); return 0; }