Funkcja sklejająca napisy

0

Witam mam do zrobienia takie zadanie
Napisać i przetestować w programie własną funkcję void app(char *str2, char *str1) sklejającą odwrócony napis str1 do napisu str2. Przy testowaniu należy zadbać o to, żeby pod adresem wskazywanym przez str2 była zarezerwowana odpowiednia ilość pamięci do pomieszczenia obu napisów. Zastosowanie funkcji app mogłoby wyglądać następująco:

char *str1 = "ppC ", str2[20] = "Witaj";

cout << str2 << endl; // Witaj

app(str2, str1);

cout << str2 << endl; // Witaj Cpp

app(str2, "CJP ");

cout << str2 << endl; // Witaj Cpp PJC

Kod który napisałem wydaje mi się dobry jednak nie wykonuje ww zadania. Proszę o wytłumaczenie dlaczego mój program nie działa albo jeśli uważacie, że pomysł jest zły to proszę o wytłumaczenie jak najlepiej wykonać powyższe zadanie. A i jeszcze mam taką jedną prośbę. Czy znacie jakieś strony gdzie dobrze są wytłumaczone wskaźniki ponieważ łapię mniej więcej o co w tym chodzi ale nie do końca

#include <iostream>
#include<cstring>
using namespace std;
void app(char *str2, char *str1);
int main(){
 char *str1 = "ppC ", str2[20] = "Witaj";

 cout << str2 << endl;    // Witaj

 app(str2, str1);

 cout << str2 << endl;    // Witaj Cpp

 app(str2, "CJP ");

 cout << str2 << endl;    // Witaj Cpp PJC 
 system("PAUSE");    
}
void app(char *str2, char *str1){
     while(*str2!='\0')
          ++str2;
     int ile=0;
     while(*str1!='\0'){
           ++str1;
           ++ile;             
           }
     *str2= ' ';
     ++str2;
     for(int i=ile; i>=0 ; --i){
             *str2=*str1;
             --str1;
             ++str2;
             }  
     ++(*str2)='\0';      
     }
 

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