Wie kann ich strtok_r anstelle von strtok verwenden, um dies zu tun?
char *pchE = strtok(NULL, " ");
Jetzt versuche ich zu verwenden strtok_r richtig… Aber manchmal bekomme ich Probleme mit dem strtol. Ich habe einen Thread, den ich 10 Mal (gleichzeitig) ausführe.
Die Funktion strtok_r() ist eine reentrante Version von strtok(). Das saveptr-Argument ist ein Zeiger auf eine char *-Variable, die intern von strtok_r() verwendet wird, um den Kontext zwischen aufeinanderfolgenden Aufrufen aufrechtzuerhalten, die denselben String parsen.
Beim ersten Aufruf von strtok_r() sollte str auf die zu parsende Zeichenfolge zeigen, und der Wert von saveptr wird ignoriert. Bei nachfolgenden Aufrufen sollte str NULL und saveptr seit dem vorherigen Aufruf unverändert sein.
Die Funktion strtok_r() ist eine reentrante Version von strtok(). Das saveptr-Argument ist ein Zeiger auf eine char *-Variable, die intern von strtok_r() verwendet wird, um den Kontext zwischen aufeinanderfolgenden Aufrufen aufrechtzuerhalten, die denselben String parsen.
Beim ersten Aufruf von strtok_r()str sollte auf die zu parsende Zeichenfolge zeigen, und der Wert von saveptr wird ignoriert. Bei nachfolgenden Aufrufen sollte str NULL und saveptr seit dem vorherigen Aufruf unverändert sein.
Unterschiedliche Zeichenfolgen können gleichzeitig analysiert werden, indem Sequenzen von Aufrufen von strtok_r() verwendet werden, die unterschiedliche saveptr-Argumente angeben.
Ich poste ein getestetes Beispiel, um die korrekte Verwendung von strtok_r() zu verstehen, anstatt strtok() in Verschachtelungen zu verwenden.
Nehmen wir zuerst eine Zeichenfolge “Sie, sind, hier” und trennen Sie sie mit den Trennzeichen “,” und “.”
siehe dies http://stackoverflow.com/questions/2227198/…
– Grijesh Chauhan
12. April 2013 um 0:45 Uhr