15 Stimmen

Strtok - char-Array gegen char-Pointer

Möglicher Duplikat:
strtok lehnt char *str ab

Wenn die strtok-Funktion verwendet wird, führt die Verwendung von char * anstelle von char [] zu einem Segmentation-Fehler.

Dies läuft korrekt:

char string[] = "hello world";
char *result = strtok(string, " ");

Dies führt zu einem Segmentation-Fehler:

char *string = "hello world";
char *result = strtok(string, " ");

Kann jemand erklären, was dieses unterschiedliche Verhalten verursacht?

0voto

Matthieu Punkte 15697

Weil der zweite eine Zeiger (der sich ändern kann) auf eine konstante Zeichenfolge deklariert...

Je nach Ihrem Compiler / Plattform / Betriebssystem / Speicherkarte... wird der "Hallo Welt"-String als Konstante gespeichert (in einem eingebetteten System kann er in ROM gespeichert sein) und ein Versuch, ihn zu ändern, wird diesen Fehler verursachen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X