problematyczne wskaźniki
Ostatnio zmodyfikowano 2013-12-01 17:03
nologin Temat założony przez niniejszego użytkownika |
problematyczne wskaźniki » 2013-11-30 21:51:02 Kolejne zadanie z symfonii, tym razem rozdział o wskaźnikach(zadanie XLVIII). Problem pojawia się przy drugiej pętli for. Pierwsza pętla działa poprawnie, a druga wyświetla 10 razy ,, to jest linijka nr 9". Dlaczego nie wyświetla ,, to jest linijka nr 0", ,, to jest linijka nr 1" aż do numeru 9 tak jak poprzednia pętla? #include <iostream> using namespace std; char ** kreator_tablicy(); int main() { char ** linijka = kreator_tablicy(); for( int i = 0; i < 10; i++ ) { linijka[ i ] = new char[ 80 ]; char tekst[ 25 ] = "to jest linijka nr "; tekst[ 21 ] =( i + '0' ); linijka[ i ] = tekst; cout << linijka[ i ] << "\n"; } for( int i = 0; i < 10; i++ ) { cout << linijka[ i ] << "\n"; } }
char ** kreator_tablicy() { char ** w; w = new char *[ 10 ]; return w; }
|
|
pekfos |
» 2013-11-30 22:02:59 Niepoprawnie kopiujesz tekst i nie zwalniasz tablicy. |
|
nologin Temat założony przez niniejszego użytkownika |
» 2013-11-30 22:09:54 Można prosić o rozwinięcie, bo dalej nie rozumiem natury problemu |
|
pekfos |
» 2013-11-30 22:14:14 Wskaźnik nie przechowuje tekstu, więc przypisaniem niczego nie kopiujesz. |
|
nologin Temat założony przez niniejszego użytkownika |
» 2013-12-01 16:37:48 Poddaje się. Nie wiem jak to naprawić, aby nie oznaczało to przepisanie linijka w linijkę kodu stąd: http://forum.pclab.pl/topic/737100-Symfonia-C-Standard-Jerzy-Grębosz-odpowiedzi-do-ćwiczeń/ |
|
pekfos |
» 2013-12-01 16:40:59 Przepisz tę linię, aby używała strcpy(). |
|
nologin Temat założony przez niniejszego użytkownika |
» 2013-12-01 17:03:42 Dziękuję za pomoc. Ostatecznie kod wygląda tak: #include <iostream> #include <cstring> using namespace std; char ** kreator_tablicy(); int main() { char ** linijka = kreator_tablicy(); for( int i = 0; i < 10; i++ ) { linijka[ i ] = new char[ 80 ]; char tekst[ 25 ] = "to jest linijka nr "; tekst[ 21 ] =( i + '0' ); strcpy( linijka[ i ], tekst ); cout << linijka[ i ] << "\n"; } char * schowek = linijka[ 3 ]; linijka[ 3 ] = linijka[ 6 ]; linijka[ 6 ] = schowek; for( int i = 0; i < 10; i++ ) { cout << * linijka << "\n"; delete[] * linijka; * linijka++ = 0; } }
char ** kreator_tablicy() { char ** w; w = new char *[ 10 ]; return w; }
|
|
« 1 » |