Skocz do zawartości

[c++] Strtok() A Naruszenie Ochrony Pamięci


Snaqu

Rekomendowane odpowiedzi

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

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

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ę
×
×
  • Dodaj nową pozycję...