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.html

    in 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 😃


Anmelden zum Antworten