J'ai beaucoup de mal à comprendre cela. J'ai une chaîne C, et je veux enlever la première partie. Disons que c'est: "Nourriture, quantité, calories". Je veux copier chacune de ces valeurs, mais pas les virgules. Je trouve la virgule, et renvoie la position de la virgule à ma méthode. Puis-je utiliserEnlever la première partie d'une chaîne C
strncpy(aLine.field[i], theLine, end);
Pour copier « Theline » à mon tableau à la position « i », avec seulement les premiers caractères « fin » (pour la première fois, « fin » serait 4, parce que c'est là la la première virgule est). Mais ensuite, parce que c'est dans une boucle, je veux enlever "Food" du tableau, et recommencer le processus. Cependant, je ne vois pas comment je peux enlever la première partie (ou déplacer le pointeur de tableau vers l'avant?) Et garder le reste. Toute aide serait utile!
En fait, sur la plupart des machines, cela va se bloquer lorsque strtok tente d'écrire à la constante chaîne de lecture seule. –
yup. Ce code est à des fins de démonstration uniquement en ce qui concerne l'utilisation de strtok. :-) –
@ChrisDodd: hâtivement upvoted votre commentaire (pas d'annulation) mais ne sont pas d'accord. La chaîne constante '* s' est copiée dans cstring' str', chaque appel à strtok modifie cstring (en remplaçant ',' par '0' terminator) et retourne l'adresse du token. Il n'y a donc pas de chaîne constante en lecture seule réécrite ici. Ai-je tort? – Salvador