String vom Stream einlesen
-
Hallo liebes Forum,
ich spiele zur Zeit ein wenig mit dem Einlesen von Ordnern und deren Dateien herum. Derzeit versuche ich den Namen einer Datei in einen String einzulesen, doch bisher ohne Erfolg. Gibt es eine Möglichkeit, dies auf solchem Wege zu tun? An anderer Stelle habe ich gelesen, dass es einfach nicht möglich sei, bin mir aber nicht sicher, ob ich das richtig verstanden habe oder einem Missverständnis erlag.
Der Code zum Auslesen der Ordnerdateien sieht folgendermaßen aus:
#include <sys/types.h> #include <dirent.h> int getDir() { DIR *directory_pointer; struct dirent *entry_pointer; directory_pointer = opendir("./"); if (directory_pointer == NULL) { perror("Error."); exit(1); } while (entry_pointer = readdir(directory_pointer)) printf("%s\n", entry_pointer->d_name); closedir(directory_pointer); }
Es muss doch in irgendeiner Form möglich sein, den Wert von entry_pointer->d_name abzufangen und in ein Char-Array zu schreiben? In der Dokumentation zum struct dirent steht dort bei d_name:
char d_name[1]
Kommt man da in irgendeiner Form heran? Alle bisherigen Versuche, auch z.B. über open_memstream(), führten entweder zu einem Speicherüberlauf oder zu gar keinem Ergebnis. Über jegliche Hilfe bin ich dankbar!
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (C89 und C99) in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Also bei mir geht dein Code^^, das exit(1) hab ich durch return ersetzt, aber das war's auch schon. [edit]oh man, ich hätte vllt erst zu Ende lesen sollen...
#include <string.h> bringt dir strcpy und damit kommst du ran.[/edit]dir.h
#ifndef __DIR_H_ #define __DIR_H_ extern int getDir(void); #endif
dir.c
#include <sys/types.h> #include <dirent.h> #include <stdio.h> #include <string.h> int getDir() { DIR *directory_pointer; struct dirent *entry_pointer; char blub[255]; directory_pointer = opendir("./"); if (directory_pointer == NULL) { perror("Error."); return(1); } while ( (entry_pointer = readdir(directory_pointer) )) { strcpy(blub,entry_pointer->d_name); printf("%s\n", blub); } closedir(directory_pointer); return(0); }
dirmain.c
#include "dir.h" int main(void) { getDir(); }
-
Works like a charm! Vielen vielen Dank für die Hilfe!