String im String



  • hallo, ich komm mal wieder nicht weiter.
    vllt könnt ihr mir die lösung aufzeigen:

    Schreiben Sie ein vollständiges C-Programm, das einen beliebigen Text (eine Zeile mit maximal 1000 Zeichen) und dazu einen Suchstring (maximal 20 Zeichen)
    anfordert und einliest.
    Der Text wird nach dem Suchstring durchsucht, das letzte Vorkommen des
    Suchstrings im Text wird einschließlich einer links- und rechtsseitigen Umgebung von
    je (bis zu) fünf Zeichen ausgegeben; falls der Suchstring nicht im Text vorkommt, soll "Nichts gefunden." ausgegeben werden.
    Beispiel für einen Programmlauf (Anführungszeichen nur zur Verdeutlichung):
    Eingabe Text: "Dies ist wieder so ein Lied."
    Suchstring: "ie"
    Ergebnis: "ein Lied."

    den ersten teil hab ich schon hinbekommen. aber den knackpunkt nicht.. 😞

    #include <stdio.h>
    #include <string.h>
    #define MAX 1000
    #define MIN 20
    
    void main(){
    char text[MAX], char sstring[MIN], n_string;
    int i;
    printf("SUCHE STRING IM STRING");
    printf("\nBitte geben Sie einen String ein <max %d> Zeichen!, MAX);
    gets(text);
    printf("\nBitte geben Sie Ihren Suchstring ein:");
    gets(sstring);
          if(strstr(text, sstrin)==NULL)
             printf("nNichts gefunden!");
          else
         // und ab hier beissts aus... :(
         /*ich brauch wohl eine schleife die 5zeichen rauf und runterzählt,wenn ich meinen string gefunden habe und einen neuen string zum reinspeicher und eine printanweisung?! oder. */
    printf("%s", n_string);
    }
    

    danke für eure hilfe!



  • unwissender_2 schrieb:

    den ersten teil hab ich schon hinbekommen. aber den knackpunkt nicht.

    dann gib dir mühe.
    kleiner tip: strstr()
    🙂



  • kleiner tip: strstr()

    hab ich doch schon in der if-anweisung abgehandelt!

    ich will ja etz nur noch wissen, wie ma den gesuchten string mit fünf zeichen rauf und runter bekommt... und da weiß ich nicht, wie ich rangehen soll...

    mfg



  • unwissender_2 schrieb:

    ich will ja etz nur noch wissen, wie ma den gesuchten string mit fünf zeichen rauf und runter bekommt... und da weiß ich nicht, wie ich rangehen soll...

    naja, 'strstr' liefert doch 'nen pointer auf den gefundenen string. wenn du 5 davon abziehst von der position 'strlen(suchstring)+10' als ende nimmst, dann hast du's ja schon. musst nur aufpassen, dass die grenzen des strings, in dem gesucht wird, nicht überschritten werden.
    🙂


Anmelden zum Antworten