Kopiowanie i podsawianie tablic

0

Cześć! Mam problem z poniższym zadaniem:
Napisać i przetestować w programie własną funkcję void cp(char *str2, char *str1) kopiującą wszystkie znaki (zaczynające się od końca do początku) z wskazywanego przez str1 do obszaru wskazywanego przez str2. Przy testowaniu należy zadbać o to, żeby pod adresem wskazywanym przez str2 była zarezerwowana odpowiednia ilość pamięci. Zastosowanie funkcji cp mogłoby wyglądać następująco:

#include <iostream>

using namespace std;


void cp(char *str2, char *str1){

    int i = 0;
    while(*(str1+i) != '\0'){
        i++;
    }

    i--;była zarezerwowana odpowiednia ilość pamięci
    int j = 0;

    while(*(str2+j) != '\0'){
        if(i >= 0)
            *(str2+j++) = *(str1+i--);
        else
            *(str2+j++) = ' ';
    }


}

int main(int argc, char *argv[]){
    char *str1 = "ppC",
    str2[6] = "Witaj";

    cout << str2 << endl; // Witaj

    cp(str2,str1);

    cout << str2 << endl; // Cpp

    cp(str2,"CJP");

    cout << str2 << endl; // Prg2

    return 0;

}

Nie wiem jak rezerwować odpowiednia ilość pamięci do tablicy:(
Przeciez rozmiaru tablicy nie mogę zmienić:(
W tym wypadku wszystko będzie ok ale co się stanie jak podamy wieksza tablice od str2.
Wyswietli się nam tylko 5 ostatnich liter.

2

Jak chcesz dynamiczną tablicę z takim interfejsem, to zapewne potrzebujesz użyć new. Przekaż prowadzącemu, że mamy 2016. roku i używanie nagiego new/delete w C++ to antyidiom.

0

Dzieki. A moglbys jeszcze wskazac jakąś strone w ktorej bedzie opisane jak to zrobic albo też jakos mi to wytlumczyc bo niestety musze to do jutra zrobic i czas nagli. Niestety przesiadka z javy na cpp powoduje u mnie swira z tymi wskaznikami i wlasnorecznym alokowaniem pamieci...

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