Nach Wörtern Suchen



  • Erledigt. Danke fuer die Antworten!



  • Du hast arge Verständnisprobleme mit Zeigern.
    Du trägst überall, wo eine Zeigervariable auftritt, nochmal & ein. Das ist UB und Unsinn.
    *(row+i) schreibt man sinnigerweise row[i], das erhöht die Übersichtlichkeit in deinem unübersichtlichen, schlecht formatierten Code.

    #define MAXLETTER S 120
    

    ist ebenso falsch.
    Ebenso fehlt fclose.
    Gewöhne dir an, deine essenziellen Funktionalitäten in eine Funktion mit möglichst wenigen Parametern zu kapseln; das erhöht nochmals die Übersichtlichkeit in deinem unübersichtlichen, schlecht formatierten Code.
    Die essenzielle Funktion sollte in etwa so aussehen

    int stimmtwort(const char *wort,const char *suchwort){ ... }
    

    Weiterhin benötigst du noch eine Funktion zumm zerteilen einer Textzeile in Wörter (getrennt an whitespaces), die wiederum für jedes Wort die obige Funktion aufruft:

    int suchewortinzeile(char *zeile,const char *suchwort){ ... }
    

    und diese Funktion rufst du dann für jedes fgets auf.



  • dcbaer schrieb:

    Ich habe einen Auftrag erhalten von unserem Prof. , ein Programm zu
    entwickeln, welches aus einem beliebigen Text aus einer Datei eine Zeichenfolge suchen kann. Zum beispiel
    fi?en --> Alle Wörter, die mit „fi“ anfangen, auf „en“ enden und genau einen
    Buchstaben beinhalten werden gesucht.

    Aber mein Problem nun ist, nur die ersten Buchstaben werden erkannt, also wenn da einanderes Wort dabei ist, das mit zwar fi anfangt und mit was anderes endet, wird auch mit angezeigt. Und das darf nicht passieren. Könntet ihr mir vllt helfen, wäre echt dankbar 🙂

    Probier es so:

    int check (char *p)
    {
        return (p[0] == 'f' && p[1] == 'i' &&
                isalpha(p[2]) &&
                p[3] == 'e' && p[4] == 'n' && p[5] == 0);
    }
    

    Du zerlegst deinen Text in Wörter und rufst mit jedem Wort diese Funktion auf. Gibt sie 1 zurück, entspricht das Wort den Suchkriterien.


Anmelden zum Antworten