[C++] Doklejanie stringu do już istniejącego

Witam.

Napisałem program z Symfonii C++ Standard, wyd. 3 z 2008r, ćwiczenie XXIII/218, w skrócie: mamy napisać funkcję, która do końca stringu będącego w jednej tablicy dołączy string będący w innej tablicy, funkcja powinna przerwać w przypadku zapełnienia całej tablicy.

Jak zwykle będę wdzięczny za uwagi, spostrzeżenia, komentarze i wskazówki.

Ćwiczenie było po rozdziale o tablicach, więc nie piszcie o żadnych vectorach, klasach itp :slight_smile:

#include

void dolacz(char docelowa[], int rozmiar_docelowej, char zrodlowa[])

{

int licznik_doc=strlen(docelowa),licznik_zro=strlen(zrodlowa)+1;

memcpy(docelowa+licznik_doc,zrodlowa,min(rozmiar_docelowej-licznik_doc,licznik_zro));

}

Użyłeś gotowych funkcji bibliotecznych. Celem zadania było zrealizowanie tego na tablicach. :slight_smile:

Przez używanie gotowych funkcji niewiele można się nauczyć. :slight_smile:

To ucz się pisać inne funkcje/programy. Pewne funkcje są w bibliotekach po to, żeby z nich korzystać, bo są najlepiej zoptymalizowane itd. Po co sobie utrudniać życie :wink:

To tak będzie o wiele szybciej:

void dolacz(char docelowa[], int rozmiar_docelowej, char zrodlowa[])  {   int licznik_doc=0,licznik_zro=0;   while(docelowa[licznik_doc++]) {}  //ilosc liter w tablicy docelowej, od tego indeksu zaczynamy doklejanie   while(zrodlowa[licznik_zro++]) {}   //ilosc liter w tablicy zrodlowej   rozmiar_docelowej-=--licznik_doc;   if(licznik_zrorozmiar_docelowej) licznik_zro=rozmiar_docelowej;   for(int i=licznik_doc,k=0;klicznik_zro; ++i,++k) docelowa[i]=zrodlowa[k];  // wlasciwe doklejanie  } [/code]



Z tym że naprawdę nie wiele się nauczysz przepisując gotowe funkcje stosując dziwne ograniczenia.



EDIT. Poprawiłem kilka drobnych błędów.

[alex], nie rozumiem twojego kodu. Gdzie masz zadeklarowane zmienne lokalne? Możesz wytłumaczyć ten kod?

Wcięło deklaracje. I nie tylko deklaracje. :lol:

Już poprawiłem.