nie działający realloc

0

Witam, program który pisze pobiera linie z tekstem(string) i wpisuje do dynamicznej tablicy, która ma na początku 5 elementów, a jeżeli trzeba to jest zwiększana dwukrotnie. Niestety realloc nie działa, chociaż wydaje mi się że robię wszystko zgodnie z przykładami. Oto kod:

#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;

int main()
{
    int n = 5,j=0,k;
    string a;
    char *tab = (char*) malloc(5 * sizeof(char));
    while(1)
    {
            getline(cin,a);
            for(int i = 0;i<a.length();i++)
             {       if(a[i] != '.') 
                    {
                            if(j<n-1) 
                            {
                                      tab[j] = a[i];
                                      j++;
                            }
                            else 
                            {
                                 n=2*n;
                                 tab = (char*) realloc(tab,(n)*sizeof(char));
                                 tab[j] = a[i];
                                 j++;
                            }
                    }
                    else
                    {
                        for(k = 0;k<j;k++) cout<<tab[k]; break;
                    }
             }
            free(tab); 
    }
}

Nie mogę tutaj działać na samych stringach, to musi być dynamiczna tablica.Jeżeli napotka na kropkę to ma być koniec, tego jeszcze nie dopracowałem bo na razie zajmowałem się tablicą, która nie działa.Wykrzacza się na przykład jak sie wpisze 3 stringi, wtedy wypluwa dziwne znaki Z góry dziękuje za wszelką pomoc

0

Ponieważ w poleceniu mam wyraźnie napisane,że nie mogę :D. Wystarczy, żeby tablica nie ucinała tego co miała przed realloc i będzie świetnie, ale cały czas coś zmieniam i nie mogę dojść do rozwiązania

1

malloc jest poza pętlą, a free wewnątrz.

0

Problem rozwiązany dziękuje :)

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