Zamiana nowego tekstu na stary za pomocą własnej funkcji

0

Siemka, chciałem napisać funkcje która zamienia część tekstu na inną. Przykładowo
Podaj tekst: Ala ma kota
Podaj wstawiany tekst: psa
Podaj indeks w który wstawić nowy wyraz: 7
Napisałem taką funkcje jednak działa ona tylko dla wyrazów o tej samej ilości znaków. Gdy wyraz wstawiany jest dłuższy bądź krótszy to program wywala nowy tekst ale tez niepotrzebne znaki dodatkowe.

#include<string.h>
using namespace std;

void zamiana(char first_txt[],char second_txt[], int indkes){
    int dlugosc1 = strlen(first_txt);
    int dlugosc2 = strlen(second_txt);
    for(int i=0 ; i<dlugosc2; i++){
        first_txt[indkes+i] = second_txt[i];
    }
    cout<<first_txt;
}

int main()
{
    char tekst_pierwotny[81];
    char tekst_wstawiany[81];
    int indeks;
    cout<<"podaj pierwszy tekst: ";
    cin.getline(tekst_pierwotny,81);
    cout<<"Podaj wstawiany tekst: ";
    cin.getline(tekst_wstawiany,81);
    cout<<"Podaj indeks od ktorego wstawiany jest nowy tekst: ";
    cin>>indeks;
    zamiana(tekst_pierwotny, tekst_wstawiany, indeks);
    return 0;
}```
0

czesc,

skoro piszesz w C++ uzywaj tego co sie uzywa w C++ a nie C z klasami

masz cos takiego jak string a na nim masz replace
https://en.cppreference.com/w/cpp/string/basic_string/replace

ten same zalozenia rozwiazuje taki kod (tylko musisz wczytac tekst, tekst do zmiany oraz indeks wiec dodatkowe 3 linijki)

#include <iostream>
#include <string>
 
int main()
{
    std::string str("The quick brown fox jumps over the lazy dog.");
 
    str.replace(10, 5, "red"); // (5)
 
    str.replace(str.begin(), str.begin() + 3, 1, 'A'); // (6)
 
    std::cout << str << '\n';
}
0

Wiem że mam string, zadanie jednak wymaga zrobienia tego używają tylko tablic znakowych typu char

1

strlen() podaje długość ciągu bez kończącego '\0'. Uwzględnij to w algorytmie.

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