Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dynamiczna tablica w tablicy

Ostatnio zmodyfikowano 2013-06-29 19:12
Autor Wiadomość
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:
C/C++
char tablica[ indeks ][ 35 ];
ale nie mam pojecia jak sie deklaruje dynamicznie tablice w przypadku tablicy w tablicy?
 
P-86457
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.
C/C++
char ** tablica;
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.
P-86460
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?
P-86463
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ę.
P-86465
berkov
Temat założony przez niniejszego użytkownika
» 2013-06-28 16:35:17
Nie dziala..

C/C++
char ** tablica;
strcpy( tablica[ 1 ], "sdsdsda" );

The variable tablica is being used without being initialized.
P-86467
Savail
» 2013-06-28 16:37:53
A pamięć przydzieliłeś do tablicy?
P-86468
berkov
Temat założony przez niniejszego użytkownika
» 2013-06-28 16:38:51
no wlasnie o to sie pytam, jak to zrobic?
P-86469
Savail
» 2013-06-28 16:40:27
np. tak jak zwykle ;d?
char ** tablica = new char *[ ilsoc ];
P-86471
« 1 » 2
  Strona 1 z 2 Następna strona