alle Dateien eines Verzeichnisses auslesen
-
Hallo zusammen,
und schon das nächste Problem, wo ich nicht voran komme.
Und zwar möchte ich diesmal alle Dateien in einem Verzeichnis auslesen.Dazu habe ich folgenden Code geschrieben:
struct stat attribute; struct dirent *entry; FILE* fd; DIR* dd; if((dd = opendir(dirname)) == NULL) { printf("error while opening the direcrory: %s\n", strerror(errno)); return (-1); } while((entry = readdir(dd)) != NULL) { if(stat(entry->d_name, &attribute) == -1) { printf("error while stat: %s\n", strerror(errno)); } if(S_ISREG(attribute.st_mode)) /* eine normale Datei? */ { printf("found file %s\n", entry->d_name); if((fd = fopen(entry->d_name, "r")) == NULL) { printf("couldn't open file %s: %s\n", entry->d_name, strerror(errno)); return -1; } else { /* lies die Datei aus oder was auch immer */ fclose(fd); } } }
bei der ersten Datei funktioniert das auch noch, die Datei wird geöffnet, aber bei der zweiten geht es nicht mehr. Da bekomme ich die Fehlermeldung "error while stat: No such file or directory".
Was mache ich hier falsch? Muss ich irgendwas zurücksetzen?Gruss Christian
-
Ja, so ähnlich. Da fehlen noch die fread und sendto-Operationen (siehe meinem letzten Thread) aber im Grunde ist es das worum es hier geht.
Ich denke ich habe den Fehler gefunden. NUR: nach dem opendir sollte ich ein chdir(verzeichnis) aufrufen. Also das habe ich gemacht und so wies aussieht liest er jetzt alle Dateien. Komisch nur, daß er die erste Datei gefunden und geöffnet hat, obwohl der Prozess ja im übergeordneten Verzeichnis liefNaja, scheint jetzt zu laufen
Danke auf jeden Fall.
Gruss Christian
Nachtrag: hier hat jemand die Antwort auf meinen ersten Beitrag rausgenommen! Dies ist kein Monolog
-
columbus schrieb:
Nachtrag: hier hat jemand die Antwort auf meinen ersten Beitrag rausgenommen! Dies ist kein Monolog
Sorry, habe meine Antwort versehentlich gelöscht.