bonjour,
je parcours une arborescence de fichiers et je mets le fichier ou le dossier courant dans une struct dirent, comment savoir si le dirent courant est un fichier ou un dossier ?
bonjour,
je parcours une arborescence de fichiers et je mets le fichier ou le dossier courant dans une struct dirent, comment savoir si le dirent courant est un fichier ou un dossier ?
Voir stat et la macro S_ISDIR ou S_ISREG
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
le dirent est généré par l'appel de la fonction readdir(DIR ). Dans cette structure, il y a : ino_t d_ino, off_t d_off, unsigned short d_reclen, char d_name[1]. Qu'est-ce que sont les d_ino,d_off et d_reclen ? car j'ai vu que les dossiers avaient un d_reclen = 16 et les fichiers txt = 28, y aurait-il un lien entre d-reclen et type de fichier ?
Issu du fichier dirent.h
Tu n'as pas le choix, il faut utiliser les fonctions et macros du fichier stat.h, c'est fait pour ça.`d_reclen' member that gives the size of the entire directory entry.
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
j'essaie d'utiliser stat() mais j'ai qq prob, notamment pour me servir de S_ISREG et S_ISDIR. Je me positionne sur un fichier, je lui applique stat() avec en param d_name d'1 dirent et 1 stat. C'est là que je ne sais pas comment on se sert de S_ISREG par exemple.
Tu dois passer le champs st_mode de la structure stat en argument de la macro.Envoyé par crischprolch
Exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 struct stat status; ... if (S_ISDIR (status.st_mode) ...
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Partager