Probleme bei Durchsuchen von Textdateien



  • fällt mir gerade noch ein.
    Wenn ich versucht habe, durch Visual studio .net das Programm zu testen(F5 oder F7, bin mir nicht sicher),
    konnte ich nie auf die Textdatei zugreifen.
    Bin mir nicht sicher, ob es mit debuggen überhaupt funktioniert.



  • da.genius schrieb:

    Beim Debuggen wollte der immer durch die Bibliotheken.

    Um das zu verhindern, mußt du anstatt StepInto StepOver, oder wie auch
    immer das in deimen Debugge heißt, verwenden.



  • Im übrigen ist deine Abrage mehr als merkwürdig.

    for(i=0; i < b; i++) { 
        if(puffer[i] == wort[j])
    

    Wo bitte kommt dieses j denn her? 😮



  • Wo kommt was her?
    Na, da geht es durchs Array, per Index(mit der for-Schlaufe).
    Und wenn eine Übereinstimmung geststeht, wird ein Text ausgegeben.
    Ich habe auch nur die Funktion der Überprüfung ins Forum gehackt.
    Zuvor werden andere Funktionen abgearbeitet, die den Test-File und den zu suchenden
    String (im Moment noch einzelnen char) einlesen/ abfragen.
    Merci für den Tip: StepInto StepOver



  • Anfangs war es mal ein Sting der in einem Textfile gesucht werden sollte.
    nach ein paar Problemen habe ich daraus ein einzelnes char gemacht.
    Ich habe j = 0 gesetzt.
    Somit wird nach einem einzelnen Zeichen gesucht.
    J=0 und wird auch nicht verändert.
    Habe mir auch schon die angegenen/ zu suchenden Angaben ausspucken lassen.
    Fehler von wegen Pointer oder so, gibt es, meiner Ansicht nach, keine.
    Das ist ja auch nicht ganz das Problem.
    Es funktioniert ja mehr oder weniger.
    Problem ist, daß ich an Stellen einen Treffer kassiere,
    wo gar kein Zeichen steht, siehe Bsp.



  • Wozu brauchst du eigentlich die Variable 'w', die du kurz vor der for - Schleife deklarierst?

    [cpp]int w = wort.length();
    for(i=0; i < b; i++)
       {
       // ...         
       }[/cpp]
    

    In dem gezeigten Quellcode wird sie jedenfalls nicht benutzt.

    Außerdem definierst du Variablen, ohne sie sinnvoll zu verwenden:

    [cpp]einlesen.getline(puffer, sizeof(puffer));
    
    int b = sizeof(puffer);[/cpp]
    

    Wieso definierst du 'b' nicht vor der 'getline()' - Anweisung?

    Wäre auf jeden Fall praktischer 🙂 .

    Auch die Variablennamen sind auf den ersten Blick nicht nachvollziehbar,
    von daher: Sinnvollere Typbezeichner benutzen 😉 .

    Grüße, Bobby - Karle



  • da.genius schrieb:

    Wo kommt was her?

    Die Variable j in if (puffer[i] == wort[j]) taucht nur an
    eben dieser Stelle auf. 😕



  • Kann es sein, dass der Puffer bei getline nicht geleert wird? Die Zeilen, die du einliest, werden immer kürzen. Es kann also sein, dass der Inhalt der Zeile 3 zB noch im Puffer drin steht, da er in Zeile 4 nur die ersten Buchstaben überschreibt. Der Rest bleibt und deine Funktion erkennt die 'q's aus den Überbleibseln. Probier mal den Puffer bei jedem neuen Zeilendurchlauf zu löschen. Zwar verstehe ich nicht so ganz, warum er das erste q nicht auch noch gespeichert halt, aber einen Versuch ist es wert. Oder lass die mal immer den Inhalt von Puffer ausgeben.



  • Dieser "Code-Wirrwarr" ist mir klar.
    Dies sind Überbleibsel vom Testen.
    Zuerst fing ich an, komplette Strings zu suchen.
    Da schon getestet.
    Dann hatte ich den Fehler, daß mir Ergebnisse zurück geliefert wurden,
    die gar nicht vorhanden waren(plus die richtigen Ergebnisse).
    Dann bin ich zurück auf ein einzelnes char.(deshalb wort[0] oder wort[j].

    Die Namen deshalb, weil ich auf die schnelle beim Testen keine langen Namen
    benutzen möchte und auch beim Nachdenken von Namen kein Jahre verweilen möchte.
    Aber ich denke, daß auch dies für den compiler kein Problem sien dürfte, oder?
    Das w ist das Überblebsel vom "manuellen" Durchsuchen mit ganzen Strings.
    Da wollte ich die Größe des angegebenen, zu suchenden, strings wissen.
    Aber wie gesagt, ich denke nicht, daß das mein Problem ist, oder?
    Vielen Dank für die Mühe, mein Wirrwarr auseinander zu fleddern:)

    Vielen vielen Dank an den Codekasper:):)
    Du bist ein Schatz!!!
    (bitte nicht falsch verstehen)
    Daran habe ich noch nicht gedacht.
    Wußte ja, daß mir noch nicht alles klar war.
    Hab es zwar noch nicht getestet, klint aber mehr als nur logsich.
    Wen der Puffer nicht gelöscht wird, kann es ungefähr hinkommen.
    Er bringt nämlich ab da jede Zeile mit immer derselben Spalte mit einem Treffer.
    Vielleicht noch eine Frage:
    Wie lösche ich denn am geschicktesten den puffer?
    Merci beaucoup pour tous!



  • Am geschicktesten ist es wohl zu ignorieren, daß da noch etwas im Puffer steht:

    int b=strlen(puffer);
    

Anmelden zum Antworten