Zmiana rozmiaru tablicy char* tab

0

Witam. Mam napisać program, który każe użytkownikowi wpywać znaki, dopóki nie wpisze dwóch tych samych. Problem w tym, że tablica ma mieć na początek rozmiar 5 znaków, jeżeli użytkownik będzie wpisywał więcej znaków, mam zwiększyć rozmiar tablicy o 5. Funkcja, która jest za to odpowiedzialna, nie dziala jak powinna (gdy wypisuje elementy tablicy maksymalnie jest 8 znaków
Mój kod:


using namespace std;

char* resizeArray(char* old, int rozmiar){
    char* nowa = new char[rozmiar+5];

    for (int i = 0 ; i < rozmiar; i++){
        nowa[i] = old[i];

    }
    delete[] old;
    old = nowa;
    return old;
}

int main(){
    char znak;
    char* tablica = new char[5];
    char tmp = '\0';



    for(int i = 0 ; ; i++){
        cout << "Wpisz znak: ";
        cin >> znak;

        if (i > sizeof(tablica) / sizeof(tablica[1]) ){
            tablica =  resizeArray(tablica, sizeof(tablica) / sizeof(tablica[1]) );
        }
        if (znak == tmp){
            break;
        }
        tablica[i] = znak;
        tmp = znak;
    }

    for (int i = 0; i < sizeof(tablica) / sizeof(tablica[1]) ; i++){
        cout << tablica[i];
    }

}

Szukałem odpowiedzi ale nic nie znalazłem, stąd też moja prośba o pomoc.

0

Sprawdz wartosc sizeof(tablica).

4

Operator sizeof na wskaźniku mówi jaka jest wielkość wskaźnika. To będzie 8 bajtów niezależnie od wielkości tablicy, na którą wskazuje ten wskaźnik. Musisz samemu pamiętać rozmiar.

1

Zamiast początkującym tłumaczyć do czego służy sizeof, prościej jest powiedzieć wprost, że

** SIZEOF NIE SŁUŻY DO SPRAWDZANIA ROZMIARU TABLICY**

Ja jeszcze dodaję, że każdemu kto tego w ten sposób użyje w programie oddanym do oceny postawię 2.0, no ale ja wredny jestem ;)

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