Wskaźniki do tablic znaków- zadanie
Ostatnio zmodyfikowano 2013-06-30 15:08
abdi |
» 2013-06-26 23:24:40 Czekaj... to chyba mogło by być tak? char *& wsk = tekst; teraz wsk i teks będą wskazywać na to samo. Przy innych wersjach kodu musisz uważać bo np wsk = "nowy tekst" powoduje ze wsk przyjmuje nowy adres i wskazuje na "nowy tekst". Ale przy tym podanym przeze mnie się nie musisz martwić. Napisz jednak czy działa bo przyznam się że kodu nie analizowałem dogłębnie i wnioskuje że o to ci chodzi z postu i z funkcji main. |
|
Matix8741 Temat założony przez niniejszego użytkownika |
» 2013-06-27 08:22:58 Tak się chyba nie da bo błąd C:\Users\V7\Documents\nauka cPP\uwaga.cpp|8|error: invalid initialization of non-const reference of type 'char*&' from a temporary of type 'char*'| a wersja *& wsk = tekst Tez nic nie daje. Pragnę zaznaczyć, że objekt tekst jest tablica znaków czyli char teskt[ 55 ] EDIT: Dobra mój bład wszystko z ustawianiem wskaźnika było dobrze, tylko go źle wyświetlałem ;( wystarczyła pętla for: for( int i = 0; i < rozmiar; i++, wsk++ ) cout <<* wsk; Ale nadal coś nie działa w funkcji uwaga Jeszcze wklejam kod źródłowy z komentarzami dla lepszej analizy: #include <iostream> using namespace std; char * uwaga( char *, int ); int main() { const int rozmiar = 55; char tekst[ rozmiar ] = { " za 3 sek nastapi autodestrukcja" }; char * wsk = tekst; wsk = uwaga( wsk, rozmiar ); for( int i = 0; i < rozmiar; i++, wsk++ ) cout <<* wsk; return 0; } char * uwaga( char * zmieniacz, int ile ) { char * przechowywacz = new char[ ile ], uwaga[] = { "UWAGA:" }; int g = 0; while( * zmieniacz != 0 ) { *( przechowywacz++ ) =*( zmieniacz++ ); g++; } zmieniacz -= g; przechowywacz -= g; g = 0; int i = 0; for(; i < 6; i++, zmieniacz++, g++ ) { * zmieniacz = uwaga[ i ]; } while( * zmieniacz != 0 ) { zmieniacz++; i++; g++; } int czy = 0; while( i < ile ) { if( * zmieniacz == 0 ) czy++; i++; g++; } zmieniacz -= g + 7; g = 0; while( * przechowywacz != 0 ) { *( zmieniacz++ ) =*( przechowywacz++ ); g++; } if( czy >= 6 ) { zmieniacz -= 3; for( int i = 0; i < 3; zmieniacz++, i++ ) * zmieniacz = '.'; } zmieniacz -= g; return zmieniacz; } |
|
Matix8741 Temat założony przez niniejszego użytkownika |
» 2013-06-30 14:13:02 Mam rozumieć, że albo nikomu się nie chciało czytać kodu, albo nikt nie widzi błędu ? Naprawdę na was liczę ;) |
|
pekfos |
» 2013-06-30 14:26:58 No i nic dziwnego, że nikomu nie chciało się pisać odpowiedzi. "Macie kod, coś nie działa. Liczę na was.." |
|
Matix8741 Temat założony przez niniejszego użytkownika |
» 2013-06-30 14:35:20 Dobra masz rację, ale ja nie mam pojęcia o co chodzi, po uruchomieniu programu system Windows wysyła powiadomienie "Program uwaga.exe przestał działać". Pewnie chodzi o złe użycie wskaźnika w jakimś miejscu i to na pewno jest w funkcji char * uwaga( char *, int ) . Ja błędu nie znajduje... EDIT: znalazłem fragment kodu z błędem while( i < ile ) { if( * zmieniacz == 0 ) czy++; i++; g++; } zmieniacz -= g + 7; [ / cpp ]
teraz kto ś wie o co chodzi ? |
|
abdi |
» 2013-06-30 14:39:18 czasami dobrym rozwiązaniem jest napisanie czegoś od zera :) a poza tym kto teraz operuje na c-stringach.? to raczej taka sztuka dla sztuki. |
|
Matix8741 Temat założony przez niniejszego użytkownika |
» 2013-06-30 14:41:38 Robię ćwiczenia z "Symfonii c++" |
|
pekfos |
» 2013-06-30 15:04:44 Nie możesz użyć funkcji z biblioteki standardowej? poza tym kto teraz operuje na c-stringach |
Każdy programujący w C/C++? |
|
1 « 2 » 3 |