Witam, mam problem z tablicami dynamicznymi. Ciag dalszy mojego programu i teraz go musze przerabiac. chce zrobic cos takiego: wczytuje kilka razy dane i chce zeby byly zapamietywane w pamieci (rozszerzenie tablicy dynamicznej) . i tu jest problem nie wiem jak to zrobic zeby to dzialalo. Potrzebne mi to bo chce pozniej dorobic funkcje zebym mogl kiedy chce wybrac opcje zapis i wtedy wszystko co jest w tablicy zapisuje do pliku.
Mniej wiecej tego typu funcja ktora mi wczytuje dane
Jedno pytanie: czy chcesz tworzyć dynamicznie za każdym razem nową tablicę i do niej wczytywać dane, czy masz jedną globalną i chcesz tylko zwiększyć jej rozmiar i w nowe miejsce wczytać dane? Bo do tego pierwszego realloc Ci się nie przyda (a tak zrozumiałem to co napisałeś).
Najlepiej chyba by bylo zwiekszac jej rozmiar, zreszta mysle ze kazde rozwiazanie bedzie dobre bo mnie zaczyna czas gonic. Wytlumacze na przykladzie o co mi dokladnie chodzi. Zalozmy ze wczytalem dane osoby, pozniej wpisalem dane dwoch osob i stwierdzilem ze sobie teraz to wszystko zapisze do pliku. naciskam klawisz ktory odpowiada za funkcje zapisu i zapisuje. Wczesniej mialem zeby odrazu zapisywalo dane do pliku, ale kolesiowi na uczelni to nie pasuje :/
tylko, że funkcja, którą podałeś w pierwszym poście nie zmieni Ci rozmiaru tablicy, bo tworzy nową. Nie wiem, co poza opisanymi rzeczami (czytanie danych i pisanie do plików) ma ten program jeszcze robić, ale jeśli to nie przeszkodzi, to wygodniej i łatwiej byłoby zrobić po prostu listę jedno- (lub w razie potrzeby dwu-) stronną. Dane (imię, nazwisko, itd.) trzymać w jakiejś strukturze i tylko tworzyć nową strukturę, wczytywać do niej dane i zapisywać wskaźnik na nową strukturę w ostatniej z listy.
Można też zrobić globalną tablicę i zmieniać jej rozmiar realloc'em, ale wtedy w/w funkcja musiałaby przyjmować jako parametr wskaźnik na ta tablicę (chyba, że funkcja jest definiowana w tym samym module co deklarowana tablica). Musiałbyś też gdzieś trzymać rozmiar tablicy i najprawdopodobniej też przekazywać go do funkcji.
Jeśli wykładowca/ćwiczeniowiec nie zabronił, to możesz też użyć vector'a z STL'a, on sam się rozszerza, Ty tylko dodajesz elementy <- to jest najprostsze w implementacji.
sprobuje pokombinowac cos z dodatkowa tablica, ewentualnie poszukam cos konkretnego o vectorze. o listach nie mam zielonego pojecia wiec nie probuje bo szkoda mi czasu. moze cos zrobie sensownego
w STL są klasy tablic dowolnego typu oparte na template i z przeciążonym operatorem indeksowania[] ;-) .... tablice zwiększają się automatycznie co 10 elementów jak dobrze pamiętam - to takie gotowe rozwiązanie a jak byś chciał sam się w to bawić to albo trzeba zrobić jakąś strukturę albo do tablicy wskaźników dodawać wskaźniki z dynamicznie zaalokowaną strukturą, polecam przestudiowanie źródeł GLib i klasę/strukturę GArray :-)
[quote="grzesiek"]te biblioteki odwalą za ciebie całą robotę, to właśnie bez nich będziesz siedział w bugach ]
heh wlasnie wzialem sie za ta klase, sprobuje cos napisac i wrzuce na forum, zobaczycie czy dobrze. poki co to opornie mi idzie, chyba za duzo na dzisiaj tego wszystkiego.