http://qiita.com/7of9/items/e28895f22afda103092e#comment-98a5487d3db42a0ecd16 J'étais accro à essayer de créer ma propre fonction basée sur les commentaires que j'avais faits.
Pour le mettre en ordre, la chaîne littérale ne peut pas être utilisée comme chaîne de caractères à passer à strtok ().
Référence 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.
J'obtiens une erreur d'exécution avec le code suivant.
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;
}
Après avoir copié le s_rcvd ci-dessus dans szbuf déclaré comme char szbuf [120]; avec strcpy (szbuf, s_rcvd);, strtok (szbuf, ","); ne provoque plus d'erreur d'exécution.
Utilisez une chaîne littérale lors du test d'une fonction. Dans le traitement normal, il s'agit d'une chaîne de caractères déclarée comme char [] au lieu d'une chaîne littérale.