String einfügen



  • Hallo!

    Wie die Überschrift schon sagt möchte ich gerne einen String an eine bestimmte Position in einem String einfügen.
    Ich hab schon ein bißchen Code wo ich ein Zeichen in einem String suche und auch herausfiltern kann. Allerdings möchte ich den String nicht, wie es bei mir ist, den anderen String nicht nur an ein Zeichen sondern an der Position wo das gesuchte Zeichen ist.
    Die Ausgabe sollte dann ungefähr so aussehen: HaWasllo
    Bei mir sieht das jedoch so aus: aWas

    Ich bräuchte mal einen Tipp was ich machen könnte damit es funktioniert.

    char* strcat(char*dest, char*src);
    char* strpbrk(char*string, char*spanset);
    main()
    {
    
        char string[] = "Hallo";
        char spanset[] = "a";
        char string2[] = "Was";
    
        /*Such-Zeiger an den Anfang setzen*/
        char *ptr = string;
    
        /*naechstes Zeichen suchen*/
        ptr = strpbrk(ptr, spanset);
    
        printf("Zeichen gefunden: %c\n", *ptr);
    
        /*Zeiger weiterrücken*/
        ptr++;
    
        /*String2 an Zeichen dranhängen*/
        strcat(spanset, string2);
        printf(spanset);
    
        }
    

    Gruß,
    El Kabong



  • El Kabong schrieb:

    Die Ausgabe sollte dann ungefähr so aussehen: HaWasllo

    Das kann nichts werden, weil in spanset nicht genug Platz ist. Also bei der Initialisierung genügend Platz vorsehen.

    Wozu ist der Zeiger eigentlich gut? Den verwendest du nach der Suche gar nicht mehr.

    El Kabong schrieb:

    HaWasllo

    Also soll das "llo" um drei Stellen weiter verschoben werden, und die entstandene Lücke mit dem "Was" gefüllt werden. Das erledigt keine Bibliotheksfunktion für dich, da hilft nur selberbauen.
    🙂



  • /* Was soll der Schrott hier?
       Die Standard-Headers deklarieren Prototypes besser und fehlerfreier als du*/
    /*char* strcat(char*dest, char*src);
    char* strpbrk(char*string, char*spanset);*/
    main()
    {
        char ergebnisstringausreichendgross[100] = "Hallo";
        char *spanset = "a";
        char *string2 = "Was";
    
        /*Such-Zeiger an den Anfang setzen*/
        char *ptr = ergebnisstringausreichendgross;
    
        /*naechstes Zeichen suchen*/
        ptr = strpbrk(ptr, spanset);
    
    /* wenn ptr hier NULL ist, gibts hier u.U. einen Fehler; muss nicht, kann aber deshalb undefiniertes Verhalten*/
        printf("Zeichen gefunden: %c\n", *ptr);
    
        /*Zeiger weiterrücken*/
        ptr++;
    
        /*Platz schaffen für Einfügen von string2*/
        memmove( ptr+strlen(string2), ptr, strlen(ptr-1) );
        /*einfügen von string2*/
        strncpy( ptr, string2, strlen(string2) );
    
        printf(ergebnisstringausreichendgross);
    
        return 0;
        }
    


  • @Wutz

    Das mit dem "Schrott" hab ich aus einem Tutorial, daher dachte ich das es üblich ist das oben manuell einzufügen. Ich hab jetzt den Schrott mit #include<string.h> ersetzt.
    Von memmove hatte ich bisher noch nichts gehört. Ich werd mir mal eine andere Aufgabenstellung basteln und versuchen hier das angewandte nochmals anzuwenden.

    Danke an euch beiden für die Hilfe!

    Gruß,
    El Kabong


Anmelden zum Antworten