Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643

    [C] scansione directory per cercare file

    Voglio effettuare una scansione di varie directory per trovare dei file, ad esempio tutti i file .txt.
    Ho provato questo codice, trovato in rete, che poi adatterei, ma mi da' errore

    [Linker error] undefined reference to `alphasort'
    [Linker error] undefined reference to `scandir'
    codice:
    int scandir(const char *pathname, struct dirent ***namelist,
                int (*select)(const struct dirent *),
                int (*compar)(const struct dirent **, const struct dirent **));
    
    int alphasort(const struct dirent **a, const struct dirent **b);
    
    
    struct dirent **namelist;
        int number;
    
        number = scandir(".", &namelist, 0, alphasort);
        if (number < 0)
            perror("scandir");
        else
            while(number--) printf("%s\n", namelist[n]->d_name);

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Sistema? Compilatore?
    every day above ground is a good one

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643
    sto facendo su windows vista (ma penso sia indifferente, intendo rispetto agli altri windows) con dev c++
    Forse chiedi del sistema perche' va inserito qualche richiamo al dos ?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Quelle due funzioni derivano dallo standard BSD 4.3 e sono state poi introdotte nello standard POSIX:2008, ma il Dev (o meglio, la vecchia versione del compilatore mingw e relative librerie che ha il Dev visto che il progetto è morto da 5-6 anni almeno) non supporta nulla di tutto ciò. Visto che sei su Windows ti consiglio di ricorrere all'API di sisema per la gestione di file e directory; se il Dev rompe anche con quelle, ti consiglio di buttarlo via senza pensarci (e sarebbe solo uno dei tanti motivi per farlo) e di passare a qualcosa di più moderno come al Visual C++ se lavori su Windows (o al gcc se hai la possibilità di lavorare su Linux dato che, almeno con le versioni più recenti, le due funzioni oggetto del thread sono tranquillamente utilizzabili).
    every day above ground is a good one

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643
    si' ma non vedo le funzioni che mi servono.
    ma possibile che non esistano funzioni simili a quella che ho messo per fare la scansione di una directory ?

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Si è possibile. A rigor di logica, il C/C++ non è tenuto a sapere se esiste un filesystem sottostante (e parecchia altra roba dire il vero), pertanto ogni interrogazione in merito va fatta al sistema operativo. Posix prevede quelle funzioni, Windows altre, altri sistemi operativi non Posix altre ancora e così via. Sta a te usare quelle appropriate in base al sistema operativo sottostante.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643
    Tra l'altro ho provato a mettere il codice
    codice:
    DWORD WINAPI GetCurrentDirectory(
      __in   DWORD nBufferLength,
      __out  LPTSTR lpBuffer
    );
    con l'include Windows.h e mi dice

    syntax error before "DWORD"

  8. #8
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Non so cosa tu abbia fatto, ma la funzione andrebbe usata così (per esempio e ammesso che non sia settato UNICODE).
    codice:
    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h>
    int main () {
        
        char myDir[MAX_PATH];
        memset(myDir,0,MAX_PATH);
        GetCurrentDirectory(MAX_PATH,myDir);
        puts(myDir);
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    643
    niente, era un errore su un include, l'ho visto dopo.
    Ora mi resta da individuare la funzione per trovare i file nella directory

  10. #10
    Originariamente inviato da Daisyland
    niente, era un errore su un include, l'ho visto dopo.
    Ora mi resta da individuare la funzione per trovare i file nella directory
    FindFirstFile et simila

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.