berkov Temat założony przez niniejszego użytkownika |
» 2013-06-28 16:44:02 tez mi sie tak wydawal a jednak robie cos zle bo dostaje blad: Unhandled exception at 0x012AD2B9 in xxxx.exe: 0xC0000005: Access violation writing location 0xBAADF00D. int ilosc = 22; char ** tablica = new char *[ ilosc ]; strcpy( tablica[ 1 ], "sdsdsda" );
|
|
pekfos |
» 2013-06-28 16:46:06 Nie przydzieliłeś pamięci dla tablica[1]. |
|
berkov Temat założony przez niniejszego użytkownika |
» 2013-06-28 16:49:04 czyli dla kazdego elementu mam przydzielac pamiec? na tym cala rzecz polega, ja nie wiem ile tych elementow bedzie, tu dalem ilosc = 22; ale tylko dla przykladu bo ta wartosc dostane dopiero w runtime.
"dynamiczne przydzielanie w dynamicznym przydzielaniu"?!? |
|
berkov Temat założony przez niniejszego użytkownika |
» 2013-06-28 16:51:06 chodzi mi o to zeby na poczatku zdefiniowac moja tablice w tablicy wiedzac ze elementow bedzie int ilosc a dlugosc stringu w kazdym elemencie bedzie 36. |
|
pekfos |
» 2013-06-28 16:51:58 Dynamicznie przydzielasz n wskaźników na miejsca na c-stringi. na tym cala rzecz polega, ja nie wiem ile tych elementow bedzie, tu dalem ilosc = 22; ale tylko dla przykladu bo ta wartosc dostane dopiero w runtime. |
Dlatego przydzielasz dynamicznie. Oj podstawy, podstawy.. Od biedy możesz użyć jednej tablicy jednowymiarowej, ale wtedy musisz pilnować, czy operacje na c-stringu nie nadpisują następnych w tablicy itp. |
|
berkov Temat założony przez niniejszego użytkownika |
» 2013-06-28 16:57:05 Innymi slowy dalej nie wiem jak to zrobic, ale dzieki za pomoc!
|
|
pekfos |
» 2013-06-28 17:07:03 Chcesz mieć tablicę char tablica[ n ][ 36 ]; , więc: Jeśli chcesz to koniecznie zrobić na tablicy dwuwymiarowej, to musisz zaalokować n wskaźników, które będą wskazywać na bloki po 36 bajtów każdy (miejsce na c-stringa) char ** tablica = new char *[ n ]; tablica[ x ] = new char[ 36 ];
Na tablicach jednowymiarowych wyglądało by to tak: char * tablica = new char[ 36 * n ];
strcpy( tablica + x * 36, "jakisstring" );
strncpy( tablica + x * 36, "jakisstring", 35 ); tablica[ x * 36 + 35 ] = 0; Tu musisz uważać, by nie uszkodzić innych stringów, a przy powiększaniu tablicy, kopiować całość. |
|
berkov Temat założony przez niniejszego użytkownika |
» 2013-06-29 19:12:06 wlasnie o to mi chodzilo: char ** tablica = new char *[ n ]; tablica[ x ] = new char[ 36 ];
wielkie dzieki. |
|
1 « 2 » |