Je lis le contenu de la bibliothèque actuelle avec readdir
, mais je voudrais traiter uniquement les fichiers et non les répertoires. Comment puis-je savoir que je pointe vers un répertoire et non vers un fichier?Comment puis-je lire readdir ignorer les répertoires en C/C++?
Merci
Vous devez combiner dirname et nom de fichier avant de passer le chemin vers lstat, par exemple. do sprintf (chemin, "% s /% s", nom_rép, de> nom_d); –
Il serait un peu plus robuste de ne traiter que les entrées de fichiers régulières ('S_ISREG') plutôt que d'exclure les entrées de répertoire (' S_ISDIR'). De cette façon, si vous rencontrez un autre type d'entrée, vous ne le traiterez pas accidentellement. –
Et juste remarqué quelque chose d'autre. Vous devez penser à utiliser 'stat' ou' lstat'. Si vous avez un lien symbolique vers un fichier réel, voulez-vous le traiter ou l'ignorer? Si vous voulez l'ignorer, utilisez 'lstat' pour que vous sachiez qu'il s'agit d'un lien symbolique. Si vous ne vous souciez pas d'être un lien symbolique et souhaitez le traiter en supposant qu'il s'agit d'un lien symbolique vers un fichier normal, utilisez 'stat'. –