No więc mam takie zadanie:
Napisać funkcję, która zarezerwuje 10 - elementową tablicę (tablica) wskaźników do C-Stringów.
Następnie przy użyciu pętli for dla każdego elementu tablicy przypisać adres 80 znakowej tablicy C-String za pomocą operatora new, w każdej z tablic umieścić C-String "To jest tablica nr: n" (gdzie n tam nr tablicy od 0), nast. za pomocą kolejnej pętli for wypisać wszystko na ekranie, później zamienić adresy wskaźników tablicy 3 i 6 i znowu wypisać.
// c-strings_wsk_new.cpp
// CPR wycięte, licencja GPL :D
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
//******************************DEKLARACJE******************************
char *tablica ();
void connect(char *src, char *dest);
void chng_adr(void * adr1, void * adr2);
//******************************GŁÓWNY**********************************
int main(int argc, char** argv)
{
char *linijka;
linijka = tablica();
for (int i = 0; i < 10; i++)
{
*(linijka+i) = new char[80];
strcpy(linijka+i, "To jest linijka nr: ");
char nr;
sprintf(&nr, "%d", i);
connect(linijka+i, &nr);
}
for (int i = 0; i < 10; i++)
cout << linijka[i] << endl;
chng_adr(linijka+3, linijka+6);
for (int i = 0; i < 10; i++)
cout << linijka[i] << endl;
return 0;
}
//******************************FUNKCJE*********************************
char *tablica()
{
char *tab = new char[10];
return(tab);
}
void connect(char *dest, char *src)
{
while (*(dest++));
dest--;
while ((*(dest++)=*(src++)));
}
void chng_adr(void * adr1, void * adr2)
{
void *old = adr1;
adr1 = adr2;
adr2 = old;
}
ale nie działa.
Działało jak main wyglądało tak:
int main(int argc, char** argv)
{
char *linijka;
linijka = tablica();
for (int i = 0; i < 10; i++)
{
linijka = new char[80];
strcpy(linijka, "To jest linijka nr: ");
char nr;
sprintf(&nr, "%d", i);
connect(linijka, &nr);
cout << linijka++ << endl;
}
return 0;
}
Ale wtedy z resztą był problem...
Ktoś pomoże? Zadanie z Symfonii C++ Standard...