C> strtok ()> erreur d'exécution> le littéral de chaîne ne peut pas être utilisé

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.

Recommended Posts

C> strtok ()> erreur d'exécution> le littéral de chaîne ne peut pas être utilisé
Aucun module nommé'distutils.util 'ne peut être utilisé avec get-pip.py
Le problème que la commande ifconfig ne peut pas être utilisée