Ich muss Einträge ignorieren, die Unterverzeichnisse sind. Wie kann das gehen? Ich denke, ich muss S_ISDIR(s.st_mode)
verwenden, aber ich weiß nicht wie. Kannst du mir bitte helfen?So ignorieren Sie Unterverzeichnisse beim Auflisten von Verzeichniseinträgen in Linux C
Hier ist mein Code:
void recorrer_directorio(char *dir_name) {
DIR *dir = NULL;
struct dirent *ent;
char fich[1024];
char buff[4096];
int fd;
/* OPEN DIRECTORY */
/*ESTO ES MI CODIGO*/
dir = opendir(dir_name);
/* TREATMENT OF ERROR */
if (dir == NULL) {
printf("aqui esta mi error");
perror("Recorrer_Directorio : opendir()");
exit(1);
}
while ((ent = readdir(dir)) != NULL) {
/* Nos saltamos las que comienzan por un punto "." */
if (ent->d_name[0] == '.')
continue;
/* PATH OF FILE*/
realpath(ent->d_name, fich);
printf("MI RUTA COMPLETA DE FCHERO [%s]\n", fich);
/* IGNORE DIRECTORY PATH */
..........
}
}
Reguläre Dateien können mit '.' beginnen, wobei sie möglicherweise nicht in Ordnung sind. Sie könnten nach "." und ".." explizit, aber Sie benötigen eine generische Lösung für andere Einträge. – chqrlie
Verwenden Sie 'realpath' auch nicht auf diese Weise: es funktioniert nur für das aktuelle Verzeichnis. Verwenden Sie die Verkettung, wie von P.P. und benutze 'realpath' auf dem resultierenden Puffer, wenn überhaupt notwendig. – chqrlie
Schließlich vergessen Sie nicht die 'closedir()', um zu vermeiden, leckere Griffe zu verlieren. – chqrlie