Tablica wskaźników C-string - program się wysypuje

0

Cześć,
rozwiązuje zadanie z Symfonii C++ i nie spodziewałem się, że napotkam takie problemy.
Założenia zadania:
-zadeklarować funkcję rezerwującą 10-cio elementową tablicę wskaźników do char (linijka)
-każdy element tej tablicy to tablica 80-cio elementowa char
-do każdego elementu tablicy linikja wrzucam łańcuch "To jest linijka nr " i numer elementu
-na koniec coś tam zmieniam i usuwam tablice, ale to na razie nie istotne tak mi się wydaje

 
using namespace std;
#include <iostream>
#include <conio.h>


char ** rezerwacja();

int main()
{
    char ** linijka = rezerwacja();
    char abc[] = "To jest linijka nr ";
    int j;
    for(int i=0; i<10; ++i)
    {
        j=0;
        linijka[i] = new char(80);
        while(*(linijka[i]+j) = abc[j++]);
        *(linijka[i]+j) = char(i+48);
        *(linijka[i]+j+1) = '0';
        cout<<linijka[i]<<endl;
    }
    return 0;
}


char ** rezerwacja()
{
    char *tablica[10];
    return tablica;
}

Siedzę nad tym już dość sporo, nie rozumiem dlaczego mi się wysypuje. Kompilator nie zgłasza błędów.

1

Nic nie zrozumiałeś z tego rozdziału. Twoja funkcja rezerwacja zwraca lokalną 10 elementową tablicę wskaźników do char. A że to tablica to w praktyce zwracasz wskaźnik na nią. Ale że jest lokalna to ZNIKA po wyjściu z funkcji.
Tą tablicę też musisz alokować dynamicznie!

0

Dziękuję za odpowiedź, rzeczywiście bardzo prosty błąd. Poprawiłem to, plus jeszcze sposób tworzenia tablicy z new char() na new char[] i bangla :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1