Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    32

    [C] Come visualizzare il contenuto di una directory

    Mi scuso per l'altro topic, ho usato la funzione cerca nel forum e non ho notato la data ^^

    dovrei visualizzare il contenuto di una directory a video, il percorso deve essere fisso all'interno del codice, mi interessa solo visualizzare il contenuto di una cartella specifica e basta, come posso fare?

    I fie contenuti nella cartella che dovrei visualizzare sono dei .bin e .txt

    PS: uso windows xp

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi visualizzare solamente il nome dei file ?

    Usa le API FindFirstFile/FindNextFile

    http://msdn.microsoft.com/en-us/library/aa365200(VS.85).aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    32
    si si, solo l'elenco dei file presenti nella cartella...

    dò un occhiata a quel codice, grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Non sarebbe meglio ricorrere a soluzioni portabili quando possibile? :]

    dirent.h

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <dirent.h>
    
    int main(void)
    {
        DIR *dp;
        struct dirent *dir_p;
    
        dp = opendir(/*directory*/);
    
        if ( dp == NULL )
           exit(1);
    
        while( ( dir_p = readdir(dp) ) != NULL )
               printf("%s\n", dir_p -> d_name);
    
        closedir(dp);
    
        return 0;
    }
    every day above ground is a good one

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Originariamente inviato da YuYevon
    Non sarebbe meglio ricorrere a soluzioni portabili quando possibile? :]
    A me VC++ 2008 Express da errore se uso quell'header, quindi proprio portabile non è.
    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.

  6. #6
    Originariamente inviato da YuYevon
    Non sarebbe meglio ricorrere a soluzioni portabili quando possibile? :]
    dirent.h è POSIX, non ANSI C, e quindi non è portabile su sistemi non POSIX (su Windows a ben vedere esiste un sottosistema POSIX, ma non è particolarmente utilizzato).
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    In effetti wikipedia dice

    dirent.h is the header in the C POSIX library for the C programming language that contains constructs that facilitate directory traversing. The function is not part of the C standard, but is considered "pseudo-standard" and is reliably portable between platforms.
    però appunto in generale non dovrebbe dare problemi di portabilità, e comunque di certo molto meno delle API di Windows :°D

    Tra l'altro, compilando quel codice su XP con Dev non ho alcun problema...
    every day above ground is a good one

  8. #8
    Originariamente inviato da YuYevon
    Non sarebbe meglio ricorrere a soluzioni portabili quando possibile? :]

    dirent.h

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <dirent.h>
    
    int main(void)
    {
        DIR *dp;
        struct dirent *dir_p;
    
        dp = opendir(/*directory*/);
    
        if ( dp == NULL )
           exit(1);
    
        while( ( dir_p = readdir(dp) ) != NULL )
               printf("%s\n", dir_p -> d_name);
    
        closedir(dp);
    
        return 0;
    }
    scusate a me non funziona.
    come directory ho messo la stringa.
    "/test_images/caps/"
    con il percorso a partire dalla directory di lavoro.
    Nel debug se guardo il risultato dir_p -> d_name vedo:
    caps~\0\0\0\b\362\b\30\0$\351o.\24\0\bimg0.bmp\0\3 66\b\30\0\370\321t2\20\0\bcaps\0\363\b\30\0\264\23 5\242K\24\0\bimg1.bmp\0\r\300\27\0\233T1S\20\0\4.. \0\0\4\364\b\30\0\232A\353]\24\0\bimg5.bmp\0\357\b\30\0B\246\301_\24\0\bimg3. bmp\0\360\b\30\0\270\20'l\24\0\bimg2.bmp\0\356\b\3 0\0\373p\bs\20\0\4.\0\0\0\4\361\b\30\0\377\377\377 \177\24\0\bimg4.bmp", '\0' <repeats 79 times>

    La directory è presente e i file che vedete nell'ultima stringa sono accessibili inserendo sempicemente il percorso completo.
    Non mi da alcun errore fino alla stampa del file, che non riesce a fare per mancanza di un carattere.
    Lavoro su Fedora 11 con ll'ultimo eclipse cdt.
    Mi sapreste spiegare perché?

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.