[C++] Tablice dynamiczne char.
Ostatnio zmodyfikowano 2014-12-08 16:52
GabeN Temat założony przez niniejszego użytkownika |
[C++] Tablice dynamiczne char. » 2014-12-08 15:17:26 Witam. Utworzyłem, używając funkcji malloc tablicę dwuwymiarową char oraz wprowadzanie do niej danych z ich wypisywaniem w nast. sposób: int main() { int w; cin >> w; char ** tablica =( char ** ) malloc( w * sizeof( char ) ); int * rozmiary =( int * ) malloc( w * sizeof( int ) ); int wielkosc; for( int i = 0; i < w; i++ ) { cin >> wielkosc; *( tablica + i ) =( char * ) malloc( wielkosc * sizeof( char ) ); *( rozmiary + i ) = wielkosc; for( int j = 0; j < wielkosc; j++ ) { int ile; char znak; cin >> ile >> znak; for( int k = 0; k < ile; k++ ) { *( *( tablica + i ) + j ) = znak; j++; } j--; } } for( int i = 0; i < w; i++ ) { for( int j = 0; j < *( rozmiary + i ); j++ ) { cout << *( *( tablica + i ) + j ); } cout << endl; } return 0; }
Kod ten działa dla w <= 4, natomiast gdy w jest równe 5, lub większe to program (w zależności od kompilatora) albo się zapętla, albo w pierwszym wierszu wypisuje śmieciowe wartości , nie mam pojęcia dlaczego. Dodam jeszcze, że nie mogę używać nawiasów kwadratowych: [, ] (oraz równoważnych im sekwencji <:, :>), operatora new oraz klasy string i pojemników z biblioteki standardowej. Zabronione jest także wykorzystanie plików nagłówkowych innych niż cstdlib i iostream. Szukałem pomocy w internecie na ten temat, ale niczego nie znalazłem. W programie nie mogę znaleźć błędu, a gdy go odpalam w debugerze code::blocks działa tak jak powinien, bez żadnych błędów. |
|
Monika90 |
» 2014-12-08 15:38:31 char ** tablica =( char ** ) malloc( w * sizeof( char ) );
powinno być w * sizeof( char* ) |
|
GabeN Temat założony przez niniejszego użytkownika |
» 2014-12-08 16:52:55 Dziękuję bardzo za pomoc Monika90. Skoro deklaruję tablicę wskaźników to musi być to wskaźnik char*. Teraz program działa dobrze :)
Temat zamknięty. |
|
« 1 » |