Robię właśnie zadanie z książki Symfonia C++ Pana Grębosza z rozdziału dotyczącego wskaźników. Chodzi w nim o to, że mam dopisać na początek tablicy tekst "UWAGA: " jeśli tablica będzie zbyt mała to na samym końcu dopisze "...". I tu prośba do was. Jak myślicie dobrze to zrobiłem? Co prawda działa ale wszyscy wiedzą, że ważniejsze jest przecież jak działa.
Napisałem taki kod.
#include <iostream>
using namespace std;
//===========================================================
char *Dopisek(char *a,int siz);
//===========================================================
int main()
{
char T[50]="Ala ma kota :D";
char *nT=Dopisek(T,50);
cout<<T;
}
//===========================================================
char *Dopisek(char *a,int siz)
{
char *T=new char[siz],Dop[]="UWAGA: ";
char *p=Dop,*poczatek=T;
int i=0;
while(*a)
{
i++;
if(i>=siz)
{
*(T-1)='.';
*(T-2)='.';
*(T-3)='.';
break;
}
if(*p)
{
*T=*p;
p++;
}
else
{
*T=*a++;
}
T++;
}
*(T)=0;
/*
a=(a-(i-7));
T-=i;
while(*(a++)=*(T++));
delete [] poczatek;
poczatek=0;
*/
return poczatek;
}
Zakomendowany fragment to przypadek w którym chce zmienić tablice wejściową co według mnie jest zbędne skoro funkcja ma zwracać wskaźnik na początek stworzonej tablicy.
Z góry bardzo dziękuję za odpowiedź i ew. sugestie od bardziej doświadczonych programistów (dlaczego te wskaźniki są takie trudneee :-( ).
PS.
Jestem gotowy na ew. krytykę :D