Snaqu Napisano Sierpień 16, 2009 Zgłoszenie Share Napisano Sierpień 16, 2009 Witam, napisałem prosty programik z kilkoma linijkami, lecz narusza on o dziwo ochronę pamięci (?) #include <iostream> #include <cstring> //#include <fstream> //#include <stdio.h> using namespace std; int main() { cout << "Witaj w programie"; char *text = "1|Snaqu|Matthew|Fedorka|"; char *przefiltrowane = strtok(text, "|"); cout << endl << endl << "<! === Koniec programu === !>" << endl; return 0; } Komunikat jaki wyskakuje to: [balcer@balcer-pc pliki]$ ./main Naruszenie ochrony pamięci [balcer@balcer-pc pliki]$ Problem leży w funkcji strtok(), lecz nie wiem jak go rozwiązać. Używam konsolki i Fedory 11 Gnome X86_64 Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
moorray Napisano Sierpień 16, 2009 Zgłoszenie Share Napisano Sierpień 16, 2009 Aby wyświetlić pomoc do funkcji w systemie Linux, wpisujemy: (RTFM=read the friendly manual) man nazwa_fukcji Jeśli przeczytasz pomoc do strtok, to dowiesz się, że: USTERKI Nigdy nie należy używać tej funkcji. Jeśli jest to jednak konieczne, należy zauważyć, że: Funkcje te modyfikują swój pierwszy argument. Tożsamość znaku separatora jest tracona. Funkcje ta nie mogą być stosowana z ciągami stałymi. Przeczytaj ponownie ostatnie zdanie. A kompilator Ci mówił: 13: warning: deprecated conversion from string constant to ‘char*’ Jeśli zadeklarujesz napis jako: char text[] = "1|Snaqu|Matthew|Fedorka|"; To zaskoczy. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Snaqu Napisano Sierpień 16, 2009 Autor Zgłoszenie Share Napisano Sierpień 16, 2009 dzięki za pomoc. Nawet nie miałem tej dokumentacji zainstalowanej, więc nie wiedziałem, że to tak można sprawdzić. Faktycznie twój sposób działa bez problemu. Pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się