Woerter im Text ersetzen



  • Hi!
    Kann mir bitte jemand helfen.

    Danke

    Die Aufgabe lautet:

    Das Programm liest vom Terminal einen Satz und zwei gleichlange Strings stringA und stringB ein. Das Programm soll suchen ob stringA im Satz vorkommt.
    Wenn stringA im Satz vorkommt, soll stringA im Satz durch stringB ersetzt werden.
    Der neue Satz soll ausgegeben werden.

    Das Problem ist, dass ich immer noch den alten Satz zurückbekomme.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define SIZE 100

    //1
    int suche_erst_buch(char *line,int offset,char buch)
    {
    int i = offset;
    while(line[ i]!= buch && line[ i])i++;
    return i;
    }

    //2
    int suche_ab_pos(char *line,int pos,char *wort)
    {
    int i = pos;
    int j = 0;
    while ((line[ i]==wort[j]) && wort[j])
    {
    i++;
    j++;
    }
    if (wort[j]==0)
    return 1;
    else
    return 0;
    }

    main()
    {
    int pos;
    int gefunden;
    char line[128];
    char buch;
    char wort[32];
    char wort2[32];
    int offset = 0;
    int i = pos;

    printf("Geben Sie bitte einen Satz ein: ");
    gets(line);
    printf("\nGeben Sie bitte ein Wort ein: ");
    gets(wort);
    printf("\nGeben Sie bitte das zweite Wort ein: ");
    gets(wort2);
    buch = wort[0];
    int bExist = 0;

    do
    {
    pos=suche_erst_buch(line,offset,buch);
    gefunden=suche_ab_pos(line,pos,wort);

    if(gefunden)
    {
    for(i=pos;i<strlen(wort);i++)
    {
    wort[i]=wort2[i];
    }
    bExist = 1;
    }
    offset = pos+1;
    }
    while(offset<strlen(line));
    printf("%s",line);

    if(!bExist)
    {
    printf("\nDas gesuchte Wort ist nicht erhalten");
    }
    printf("\n\nPress any key...");
    getchar();
    }



  • Ich habe jetzt nicht versucht deinen Code zu verstehen (liegt vielleicht daran, dass er nicht mit cpp-Tags formatiert wurde ;)), aber könnte es sein, dass dir die Funktion strstr() einiges an Arbeit abnehmen würde?

    In etwa so:

    if(substring=strstr(line,wort)){
        for(i=0;i<strlen(wort);i++){
            substring[i]=wort2[i];
        }
    }
    else{
         printf("\nDas gesuchte Wort ist nicht erhalten");
    }
    

Anmelden zum Antworten