Probleme mit "strstr"



  • Hi,
    habe folgendes Problem in meinem Programm...
    Ich lese eine Datei zeilenweise ein (fgets), anschließend überprüfe ich ob jede Zeile solche Zeichen drin hat: '{' oder '}'

    if (strstr(in, "{") != NULL || strstr(in, "}")) 
    {
        //wenn ja, mache hier weiter
        ...
    }
    

    Wie kann ich so eine Zeile überprüfen, ob mehrere dieser Zeichen drin sind und wenn ja, wieviele?

    also: wenn ich z.B. die Zeile einlese:

    hallo{test}hihi{test{jupp}}
    

    wie kann ich also jetzt raus kriegen, dass hier 3 * { drin ist und 3 *} ??? 😕
    Und am besten wäre noch eine Fehlermeldung, sollten es nicht gleich viele öffnende wie schließende Klammern sein.
    Kann mir jemand helfen????? 🕶



  • schreib dir doch selber eine Funktion, die die } in einer Zeile zählt.



  • Ja, gute Idee, aber wie?
    Wie bekomme ich es hin, dass wirklich die komplette Zeile "abgegrast" wird?
    Erst lese ich die Zeile ein
    fgets...
    Dann brauche ich eine for schleife, die jede Zeile bis zum Ende nach dem Zeichen absucht und wenn eines gefunden wurde ein Zaehler hochgezaehlt wird.
    Oder bin ich schon auf dem Holzweg?
    Wie gehe ich denn den string zeichenweise durch um ihn dann mit strchr zu überprüfen???????????????????????????????????????????????????????????????



  • Gerd_the_real_one schrieb:

    Wie gehe ich denn den string zeichenweise durch um ihn dann mit strchr zu überprüfen???????????????????????????????????????????????????????????????

    Deine Fragezeichentaste klemmt, das solltest du reparieren lassen...

    btw:
    warum denn strchr? strchr findet ein Vorkommen, du willst aber alle Vorkommen zählen. Wieso gehst du nicht selber den string Zeichen für Zeichen durch und zählst wieoft weches Zeichen vorgekommen ist?



  • Gerd the real one schrieb:

    Wie gehe ich denn den string zeichenweise durch um ihn dann mit strchr zu überprüfen???????????????????????????????????????????????????????????????

    Shade Of Mine schrieb:

    warum denn strchr? strchr findet ein Vorkommen, du willst aber alle Vorkommen zählen. Wieso gehst du nicht selber den string Zeichen für Zeichen durch und zählst wieoft welches Zeichen vorgekommen ist?

    Wie gehe ich die Zeile zeichen für zeichen durch???



  • Gerd_the_real_one schrieb:

    Wie gehe ich die Zeile zeichen für zeichen durch???

    Ah, schon leicht repariert, aber noch nicht ganz 😞 Naja, du bist auf dem richtigen Weg.

    btw:
    Kannst du strlen() selber implementieren? Oder strcpy? Oder strchr?

    Wenn nicht, dann lern noch n bisschen die Grundlagen. Wenn ja, dann denk mal genauer nach.



  • Gerd_the_real_one schrieb:

    Wie gehe ich die Zeile zeichen für zeichen durch???

    Zum Beispiel so:

    char * p;
    for (p = zeile; *p != '\0'; ++p) {
      /* p zeigt hier auf das aktuelle Zeichen */
      if (*p == '}')
        ++counter;
    }
    


  • @Bashar: Danke, so etwas habe ich benötigt.

    Scheint jetzt soweit zu funktionieren. Danke an alle.


Anmelden zum Antworten