Zwei Dateien in Schleifen auslesen?
-
Hallo,
ich versuche vergebens in einer Schleife eine Datei zu öffnen und den eingelesenen String in einer zweiten Schleife zu öffnen.if ((Fp = fopen(namen ,"r")) == NULL){cout << "Eingabedatei konnte nicht geöffnet werden!"; } while(!feof(Fp)) { //copy Zeije aus FP in Linebuffer fgets(LineBuf,lMaxLineLen,Fp); //--> bis hier alles OK if ((FilePointer = fopen( LineBuf ,"r")) == NULL){cout << "Eingabedatei konnte nicht geöffnet werden!"; } // Datei kann nicht geöffnet werden? wenn ich direkt den String eingebe, öffnet das Programm die entsprechende Datei. while(!feof(FilePointer)){ //Mache Was } fclose(FilePointer); } fclose(Fp); }
Ich danke für eure Hilfe
-
Gib doch mal den ausgelesenen text in der Konsole oder der MessageBox aus... Und gehört das nicht ins ANSI-C Forum? Bzw. warum verwendest du nicht die C++ Standard-Filestreams?
MfG
-
Prüf mal ob fgets () das Zeilenendzeichen in "LineBuf" ans Ende mit reingesetzt hat :
fgets schrieb:
... fgets retains the newline character at the end of ...
Falls ja, dann weg damit !
-
in der ersten Datei steht:
/home/thorsten/Test/eingabe=10.1.html
/home/thorsten/Test/eingabe=10.2.html
/home/thorsten/Test/eingabe=10.3.htmlin der zweiten Datei möchte Ich das Verzeichniss einlesen.
gebe ich die Datei direkt an "/home/thorsten/Test/eingabe=10.1.html"
kann sie geöffnet werden.über den LineBuf gibt es Probleme. aber warum?
mist, bin im Falschen Forum gelandet --> kann jmd. den Beitrag verschieben?
Die der Dateiname wird an die zweite Schleife übergeben mit dem '\n'
wie kann ich das Zeichen entfernen?
-
Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
thorsten1980 schrieb:
über den LineBuf gibt es Probleme. aber warum?
fgets() lässt das NewLine am Zeilenende stehen, d.h. du versuchst die Datei "/home/thorsten/Test/eingabe=10.1.html\n" zu öffnen - die das System vermutlich nicht findet. Das mußt du abschneiden, indem du es mit '\0' (Stringende-Marke) überschreibst:
int len=strlen(LineBuf); if(LineBuf[len-1]=='\n') LineBuf[len-1]='\0';
mist, bin im Falschen Forum gelandet --> kann jmd. den Beitrag verschieben?
Klar, wenn du so höflich bittest