Pravilo foruma je da se ne resavaju domaci, ako se sam ne potrudis i da potrazis pomoc gde zaglavis. Ali evo jedan iskljucak, jer sam danas dobre volje

Pretpostavljam da ne smes koristiti funkcije strcat ili sprintf. Ako smes onda je mnogo lakse

Kod bez strcat i sprintf
Code:
#include <iostream>
using namespace std;
char* dodjeli_str(char* s);
void dodaj_str(char* &a, char* b);
char* spoji_str(char* a, char* b); //ovo su overloaded funkcije
char* spoji_str(char* a, char* b, char* c); //ovo su overloaded funkcije
int main()
{
char* str1=dodjeli_str("Prva recenica");
dodaj_str(str1, ", ");
char* str2=spoji_str(str1, "Treca recenica");
char* str3=spoji_str(">>>>>", str2, "<<<<<<");
cout << str1 << endl; //sipis: "Prva recenica, "
cout << str2 << endl; //ispis: "Prva recenica, Treca recenica"
cout << str3 << endl; //ispis: ">>>>>Prva recenica, Treca recenica<<<<<<"
delete [] str1;
delete [] str2;
delete [] str3;
return 0;
}
char* dodjeli_str(char* s)
{
char* tmp = new char[strlen(s) + 1];
for (unsigned i = 0; i <= strlen(s); ++i)
tmp[i] = s[i];
return tmp;
}
void dodaj_str(char* &a, char* b)
{
char* tmp = new char[strlen(a) + strlen(b) + 1];
for (unsigned i = 0; i <= strlen(a); ++i)
tmp[i] = a[i];
for (unsigned i = 0; i <= strlen(b); ++i)
tmp[strlen(a) + i] = b[i];
a = tmp;
}
char* spoji_str(char* a, char* b)
{
char* tmp = new char[strlen(a) + strlen(b) + 1];
for (unsigned i = 0; i <= strlen(a); ++i)
tmp[i] = a[i];
for (unsigned i = 0; i <= strlen(b); ++i)
tmp[strlen(a) + i] = b[i];
return tmp;
}
char* spoji_str(char* a, char* b, char* c)
{
char* tmp = new char[strlen(a) + strlen(b) + strlen(c) + 1];
for (unsigned i = 0; i <= strlen(a); ++i)
tmp[i] = a[i];
for (unsigned i = 0; i <= strlen(b); ++i)
tmp[strlen(a) + i] = b[i];
for (unsigned i = 0; i <= strlen(c); ++i)
tmp[strlen(a) + strlen(b) + i] = c[i];
return tmp;
}
Sa mnogo copy&paste
