Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C] Leggere file in sequenza da una cartella

    Citazione:
    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;
    }

    Non capisco perché questa porzione di codice a me non funziona.
    come directory ho messo la stringa.
    "/test_images/caps/"
    che è 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>

    "img0.bmp","img1.bmp", etc. sono proprio i nomi dei file contenuti nella cartella.

    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 nome del file, che non riesce a fare per mancanza di un carattere (tilde?).
    Lavoro su Fedora 11 con l'ultimo eclipse cdt.
    Mi sapreste spiegare dove sbaglio?
    Grazie.

  2. #2
    Credo di aver capito il problema: aggiungo una "/" di troppo al nome del file.
    In compenso ora il loop stampa:

    img0.bmp
    img1.bmp
    ..
    img5.bmp
    img3.bmp
    img2.bmp
    .
    img4.bmp

    I file sono quelli. Ma chi sono i pallini?!? VVoVe:

  3. #3
    Utente di HTML.it L'avatar di hkproj
    Registrato dal
    Jul 2006
    Messaggi
    250
    se sei su linux, i due pallini sono due directory speciali che ogni sistema Linux (e penso anche Unix) ha.
    Il '.' indica la directory corrente, mentre i due punti '..' indicano la directory padre di quella corrente.
    Ciao!
    --------------------HkProj------------------

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 © 2024 vBulletin Solutions, Inc. All rights reserved.