strcmp() --> Absturz
-
Hallo,
ich habe ein kleines Kernelmodul geschriben und dort möchte ich den strmcp() Befehl verwenden. Ich weiß es kann bei der Kernelprogrammierung nicht immer auf die gleichen Funktionen zurückgegriffen werden, als wenn ich ein normales Programm schreiben würde. Gehört strcmp() evtl. dazu? Zumindes meckert der Compiler nicht.
Aber wenn ich z.B. prüfen will ob ein String ein ; enthält. Dann friert mein komplettes System ein. Und es liegt definitiv an dieser einen Zeile:
ret = strcmp(ptr[i],token);
ret ist ein int,
ptr ein char pointer, der auf einen String zeigt,
token ist ein char mit dem Wert ';'Wenn ich den strcmp-Befehl nicht verwenden kann, wie kann ich mir statt dem Zeichen auf den der Pointer ptr gerade zeigt, den Wert anzeigen lassen? So dass ich dann einfach die Werte vergeliche. Als Workaround.
thx
-
Habe es jetzt wie schon angedeutet mit Zahlenwerten gelöst. Vergleiche also zwei integer miteinander.
-
Warum willst Du denn dafür strcmp verwenden? strcmp verwendet man um ganze C-Strings zu vergleichen, nicht um chars aus Strings herauszufischen, dafür reicht der gute alte Index-Operator.
Also ungefähr sowas:
char token = ';'; if (ptr[i] == token) rhabarber(); else heute_kein_rhabarber();
(An sich darfst Du strcmp natürlich auch in Kernel-Modulen verwenden, bringt Dir nur hier nichts. Und es schmiert ab, weil es zwei nullterminierte Strings erwartet, und nicht einen C-String und ein char.)