Prací se složkami myslím příkaz dir - zjištění obsahu složky. Ve windows není dir jako
v Basicu, je tu speciální API, které dokáže najít první soubor a další soubory ve složce.
Zde je jednoduchý příklad :


#include <windows.h>
// nesmíme zapomenout, že funkce jsou v modulu

WIN32_FIND_DATA fd;
HANDLE h;
// struktury pro hledání souborů

h = FindFirstFile("C:\\*", &fd);
// najdi jakýkoli - "*" první soubor na adrese C:
// (*.* by nenašlo soubory bez přípony)
// můžeme tam dát třeba "*.txt" pro všechny texťáky

if(!h)
    return; // žádný tam není

while(1) {
    // ve fd.cFileName je nážev souboru, můžeme ho zpracovat ...
    if(strcmp(".", fd.cFileName) && strcmp("..", fd.cFileName)) {
        // kromě "složek" . a .. (ty vedou "o patro níž")
        if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
            //soubor je složka
	} else {
            // soubor je soubor
        }
    }	

    if(FindNextFile(h, &fd) == 0)
        break; // Je tam ještě další soubor ?
}
Tak, to by bylo. A nyní jednoduchý sampl :

#include <string.h>
#include <windows.h>
#include <stdio.h>

FILE *fw;

void FindFiles(char *slozka)
{
    char pom[256];
    WIN32_FIND_DATA fd;
    HANDLE h;
    // struktury pro hledání funkcí

    sprintf(pom, "%s*", slozka);
    // vlozeni *

    h = FindFirstFile(pom, &fd);
    // najdi jakýkoli - "*" první soubor na adrese C:

    if(!h)
        return; // žádný tam není

    while(1) {
        // ve fd.cFileName je nážev souboru, můžeme ho zpracovat ...
        if(strcmp(".", fd.cFileName) && strcmp("..", fd.cFileName)) {
            if(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
                sprintf(pom, "%s%s\\", slozka, fd.cFileName);
                // vytvoření cesty

                FindFiles(pom);
                // projdi tuto složku
	    } else { // je to soubor
                sprintf(pom, "%s%s\n", slozka, fd.cFileName);
                // vytvoření názvu

                fputs(fw, pom);
                // zapsání do souboru
            }
        }	

        if(FindNextFile(h, &fd) == 0)
            break; // Je tam ještě další soubor ?
    }
}

int main()
{
    fw = fopen("C:\\tree.txt", "w");
    // vytvoří soubor

    FindFiles("C:\\");
    // projeď strom na disku c ... 

    fclose(fw);
    // uzavři soubor
}
Tento jednoduchý program (je to konzola !) nascanuje strukturu na vašem harddisku C a uloží názvy všech souborů do souboru tree.txt, zkuste si to ;-) Pro práci se soubory jako takovými jsou funkce : BOOL DeleteFile(LPCTSTR lpFileName); Smaže soubor lpFileName, pokud uspěje, vrátí nenulovou hodnotu. BOOL CopyFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName, BOOL bFailIfExists); Zkopíruje soubor z jedné adresy na druhou. Parametr udává, jestli má přepsat už existující soubor. Zase když uspěje, vrátí nenulovou hodnotu. BOOL MoveFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileName); Přesune soubor z jedné adresy na druhou. Když uspěje, vrátí nenulovou hodnotu. Existuje ještě MoveFileEx, která má nastavitelné, co se stane když soubor existuje. Potom ještě jedna šikovná dosovská : int _access(const char *path, int mode); Je to v io.h, a vrátí to jedničku, pokud se souborem na adrese path můžete dělat věci, určené parametrem mode. Možnosti jsou tyhle : No, a to je asi všechno co bych vám chtěl o souborech říct. -tHE SWINe-
Zpátky