Einen Text in einer Datei suchen ...



  • Ich habe ( mal wieder ) ein Problem mit dem Dateihandling ... 😞
    Ich weiss mitlerweile wie man eine Datei ausliest ... was reinschreibt ...
    Aber ... ich habe heute Probiert ob man nicht eine ganz bestimmte zeile aus einer Datei rausfiltern kann und sie dann ausgeben kann ... ich habe schon das versucht ..

    #include <stdio.h> 
    #include <stdlib.h> 
    #include <conio.h> 
    #include <iostream> 
    #include <windows.h> 
    #include <string.h>
    #include <fstream>
    using namespace std ; 
    
    int main() 
    {
    
        fstream f;
        f.open("test.txt", ios::out|ios::app);      // Datei "Test.txt" öffnen 
        f << "LOL1" << endl;                        // irgendwas reinschreiben
        f << "Lol1" << endl;
        f.close();
    
        ifstream h; 
        string s;
        h.open("test.txt", ios::in);
        while (!h.eof())      // Bis nix mehr zum lesen gibt ... ausführen
        {
    
            getline(h, s);    // Das liest jede zeile ...   
            cout << s << endl;// Das gelesene wird ausgegeben 
    
        }
        f.close();
    
        cin.get() ;
    }
    

    der untere Teil liest zwar Zeile für Zeile aus ... aber ich will das er nur ( z.B. ) die 2. Zeile liest oder solange liest bis er den text Lol1 findet ...

    Dann habe ich noch das gefunden ...

    char* text_datei = "test.txt"; 
        char* text = "LOL"; 
        char buf[256] = {0}; // Puffer zum Einlesen. 
        FILE* fp;
        fp = fopen(  text_datei, "rt" );    // rt: read text 
        if ( !fp ) return 1; 
        fgets( buf, sizeof(buf), fp ); 
        fclose(fp); 
        if ( strncmp( buf, text, strlen(text) ) == 0 ) 
            printf( "%s in Datei %s gefunden. \n", text, text_datei ); 
        else 
            printf( "%s nicht in Datei %s gefunden. \n", text, text_datei );
    

    Der Code hat das Problem ... sobald da uch nur ein einziges anderes zeichen in der Datei steht gibt er aus "nicht gefunden "

    Was muss ich schreiben ... möglichst bei der ersten variante ... das er nach einem text in der datei sucht ?





  • #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include <iostream>
    #include <windows.h>
    #include <string.h>
    #include <fstream>
    using namespace std ;
    
    int main()
    {
    
        fstream f;
        f.open("test.txt", ios::out|ios::app);      // Datei "Test.txt" öffnen
        f << "LOL1" << endl;                        // irgendwas reinschreiben
        f << "Lol1" << endl;
        f.close();
    
        ifstream h;
        string s;
        h.open("test.txt", ios::in);
        bool abbrechen = false;
        while (!h.eof() && !abbrechen)      // Bis nix mehr zum lesen gibt ... ausführen
        {
    
            getline(h, s);    // Das liest jede zeile ...  
            if(s == "LOL1") abbrechen = true;
            if(abbrechen) cout << s << endl;// Das gelesene wird ausgegeben
    
        }
        f.close();
    
        cin.get() ;
    }
    

    So bricht er ab sobald "LOL1" gefunden wurde und gibt LOL1 aus.



  • anstelle der variable abbrechen könntest du auch einfach die break-anweisung benutzen um aus der while schleife zu entkommen und s dann danach ausgeben



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • besser ist aber auch das string.find zu verwenden statt ein einfacher vergleich


Anmelden zum Antworten