Dynamiczna tablica w tablicy
Ostatnio zmodyfikowano 2013-06-29 19:12
berkov Temat założony przez niniejszego użytkownika |
Dynamiczna tablica w tablicy » 2013-06-28 16:08:58 Hey ho. Potrzebuje przechowac string pod danym indeks'em. Gdzie z gory wiem ze liczba znakow w kazdym stringu nie bedzie wieksza niz powiedzmy 35(char slowo[34]) ale nie wiem ile bedzie samych elementow (slow) tablicy - poniewaz wartosc ta bedzie dynamiczna. normalnie uzylbym czegos takiego: char tablica[ indeks ][ 35 ];
ale nie mam pojecia jak sie deklaruje dynamicznie tablice w przypadku tablicy w tablicy? |
|
pekfos |
» 2013-06-28 16:22:37 z gory wiem ze liczba znakow w kazdym stringu nie bedzie wieksza niz powiedzmy 35(char slowo[34]) |
W takim razie raczej char slowo[36] (35 liter i zero, którego pewnie nie policzyłeś). Nawet nie musisz określać limitu. Alokujesz tyle wskaźników char* ile potrzebujesz, a potem pod każdy wskaźnik alokujesz miejsce na c-stringa. Musisz tylko pamiętać o zwolnieniu całej, przydzielonej w ten sposób, pamięci. Jeśli piszesz w C++, możesz użyć wektora stringów. Łatwo powiększysz tablicę i nie będziesz się musiał martwić o zwalnianie pamięci. |
|
berkov Temat założony przez niniejszego użytkownika |
» 2013-06-28 16:27:15 OK.. ale jak sie mam pozniej dobrac do poszczegolnych elementow. np element 0 = "abc"; element 1 = "def"; itd?
jak na koncu funkcji zwolnic cala tablice? |
|
pekfos |
» 2013-06-28 16:30:08 Jeśli starczy miejsca, stringa kopiujesz przy pomocy strcpy(), lub nawet zwykłej pętli. jak na koncu funkcji zwolnic cala tablice? |
Zwalniasz ze wszystkich wskaźników w tablicy, a potem samą tablicę. |
|
berkov Temat założony przez niniejszego użytkownika |
» 2013-06-28 16:35:17 Nie dziala.. char ** tablica; strcpy( tablica[ 1 ], "sdsdsda" );
The variable tablica is being used without being initialized. |
|
Savail |
» 2013-06-28 16:37:53 A pamięć przydzieliłeś do tablicy? |
|
berkov Temat założony przez niniejszego użytkownika |
» 2013-06-28 16:38:51 no wlasnie o to sie pytam, jak to zrobic? |
|
Savail |
» 2013-06-28 16:40:27 np. tak jak zwykle ;d? char ** tablica = new char *[ ilsoc ]; |
|
« 1 » 2 |