http://qiita.com/7of9/items/e28895f22afda103092e#comment-98a5487d3db42a0ecd16 Ich war süchtig danach, meine eigene Funktion basierend auf meinen Kommentaren zu erstellen.
Das String-Literal kann nicht als Zeichenfolge verwendet werden, die an strtok () übergeben werden soll.
Referenz http://stackoverflow.com/questions/32844304/splitting-char-array-using-strtok-giving-runtime-error
You can't call strtok() on a string literal, because string literals are constant.
Ich erhalte einen Laufzeitfehler mit dem folgenden Code.
http://ideone.com/jcTotE
#include <stdio.h>
#include <string.h>
static const char *s_rcvd = "pval,3.141,2.718,6.022"; // dummy data
int main(void) {
char *tp;
tp = strtok(s_rcvd, ",");
return 0;
}
Nach dem Kopieren des obigen s_rcvd nach szbuf, das als char szbuf [120] deklariert wurde; mit strcpy (szbuf, s_rcvd); verursacht strtok (szbuf, ",") keinen Laufzeitfehler mehr.
Verwenden Sie beim Testen einer Funktion das Zeichenfolgenliteral. Bei der normalen Verarbeitung handelt es sich um eine Zeichenfolge, die anstelle des Zeichenfolgenliterals als char [] deklariert wurde.