Lancuch znakow w c

0

Witam, program mam za zadanie podmienic dany przez uzytkownika wyraz na inny.

Z grubsza poradzilem sobie z tym przy pomocy ludzi z forum jednak nie do konca, program dziala tak jak powinien tylko gdy wyraz podmieniany i jego zamiennik maja taka sama ilosc znakow, gdy jest dluzszy to zastepuje go tylko tyloma znakami ile jest w wyrazie do podmieniania np:

podmieniajac wyraz "pod" na "obok" powstaje "obo"

Drugim problemem jest sytuacja odwrotna gdy wyraz jest krotszy ucina dalszy lancuch znakow, dowiedzialem sie ze zostaje dopisany wtedy \null. Jednak nie wiem jak sobie z tym poradzic.

Z gory dziekuje i pozdrawiam.

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

void podmien(char str[], const char *slowo, const char *zamiennik)
{
    char *wskaznik=strstr(str,slowo);
    char *wskaznik2=strrchr(str,slowo);
    int i,j=0;
    for(i = 0; str[i] !=wskaznik2; i++){
        if(str[i] == slowo[j]){
            str[i] = zamiennik[j];
            j++;
        }
    }
}

int main()
{
    char str[] = "1410 : bitwa pod Grunwaldem.";
    char slowo[15];
    char zamiennik[15];
    printf("Podaj slowo do zamiany: ");
    scanf("%s", &slowo);
    printf("Podaj zamiennik slowa: ");
    scanf("%s", &zamiennik);
    podmien(str,slowo,zamiennik);
    printf("%s", str);

    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0