Kopiowanie ciągu znaków

0

Mam postawione zadanie: w C++ napisać funkcję, która zwróci kopię ciągu znaków.

w main ma być mniej więcej coś takiego:

char* orginal = "ala ma kota";
char* copy;
copy = makeCopy(orginal);
cout << copy << endl;

Wychodzi mi na to, że funkcja musi mieć prototyp wyglądający jak:

char* makeCopy(char*);

czyli muszę w funkcji utworzyć nową tablicę alokowaną statycznie, co przecież nie zadziała.
Co źle rozumiem?

0

c++ to czemu nie użyjesz std::string?

0

Nie rozumiem gdzie widzisz jakis problem

char* makeCopy(const char* source){
  char* destination = new char[strlen(source)+1];
  char* mover = destination;
  while((*mover++=*source++));
  return destination;
}
0

Czyli w makeCopy() alokujesz dynamicznie tablicę charów o odpowiedniej wielkości i zwracasz.
Pamiętaj potem o delete[], żeby zwolnic pamięć (no chyba że użyjesz malloc(), to wtedy free()).

Edit: widzę, że Shalom właśnie mnie uprzedził podając rozwiązanie :)

0

Dzięki za odpowiedzi. Moim problemem było to, że byłem przeświadczony, że tablica alokowana dynamicznie musi być zwracana jako char**

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.