Miten C++:lla voi laskea esim kuinka monta kansiota ja alikansiota ja niiden alikansioita jne. on C - asemassa?
Kun nyt Windowssista on kyse niin MSDN on hyvä lähde.
Tuolta löytyi esimerkki, josta sai pienellä muutoksella tällaisen:
#include <stdio.h> #include <windows.h> int main(void) { WIN32_FIND_DATA ffd; HANDLE hFind = INVALID_HANDLE_VALUE; hFind = FindFirstFile("C:\\*", &ffd); if (hFind == INVALID_HANDLE_VALUE) { DWORD dwError = GetLastError(); printf("FindFirstFile meni vikaan (%u)\n", dwError); return dwError; } if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { printf(("%s\n"), ffd.cFileName); } while (FindNextFile(hFind, &ffd) != 0) { if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { printf(("%s\n"), ffd.cFileName); } } DWORD dwError = GetLastError(); if (dwError != ERROR_NO_MORE_FILES) { printf("FindNextFile meni vikaan (%u)\n", dwError); } FindClose(hFind); return dwError; }
Tuosta puuttuu noiden alihakemistojen listaus, mutta jätämpä sinullekin jotain tekemistä.
Toimi kivasti MinGW:n Linux-versiolla käännettynä ja Winen kautta ajettuna.
kIITOs!
Joo kyllä mä tuon osasinkin jo tehdä, mutta en tuota alihakemistojen listausta.
Rekursio-opas, hakemistojen läpikäynti. Huomaa myös ladattava lähdekoodipaketti. Pascal-versiosta löytyy tuo hakemistolistaus, sen ja tuon ylläolevan avulla sietäisit osata itse. (Jos jotain haluaa, saa kyllä luvan itsekin tehdä jotain sen eteen.)
Aihe on jo aika vanha, joten et voi enää vastata siihen.