Comment utiliser strtok()
Je suis en train d'écrire un programme C pour l'étude de l'utilisation de strtok() utilisation. Voici mon code:
#include<stdio.h>
#include<string.h>
main()
{
char abc[100] = "ls &";
char * tok;
tok = strtok(abc, " ");
while(tok!=NULL)
{
printf("%s", tok);
tok = strtok(NULL, " ");
}
printf("\n\n\n\n\n%s", tok);
return 0;
}
C'est l'impression de la sortie suivante:
ls&
(null)
Mais je veux qu'il print '&' à la deuxième instruction printf. Comment dois-je faire? J'ai besoin de cette partie de mes devoirs de projet. Quelqu'un peut-il m'aider?
Vous en remercie d'avance! 🙂
Votre
Ajouter un saut de ligne à la première printf()
Et si vous avez besoin d'aide avec
Oui, c'est l'impression NULL. Comment je fais pour imprimer "& " à la place?
Combien de fois pensez-vous que la boucle s'exécute? Que pensez-vous de l'impression la première fois?
while
boucle continue jusqu'à ce que tok
est NULL
, droit? Ainsi, dans la deuxième printf
déclaration, tok
est NULL
. Est surprenant?Ajouter un saut de ligne à la première printf()
Et si vous avez besoin d'aide avec
strtok()
vous pouvez toujours consulter la documentation.Oui, c'est l'impression NULL. Comment je fais pour imprimer "& " à la place?
Combien de fois pensez-vous que la boucle s'exécute? Que pensez-vous de l'impression la première fois?
OriginalL'auteur user2201650 | 2013-09-21
Vous devez vous connecter pour publier un commentaire.
printf()
se comportent bien certains d'entre eux dump de base.Code:
Ou (optimisé, avec l'aimable autorisation de auto.):
De sortie:
Vous pouvez choisir votre propre marqueur de caractères, mais quand ne pas jouer avec XML ou HTML, je trouve le double angle de supports assez bonne pour l'emploi.
Vous pouvez également utiliser votre structure de boucle sur le coût de la rédaction d'un deuxième appel à
strtok()
(qui est un coût minime, mais pourrait être avancé à violer le principe SEC: Ne pas se Répéter):Même sortie.
Révisé exigence
Oui, il ya généralement un moyen de faire presque n'importe quoi. Cela semble fonctionner. Il travaille aussi sainement, si il y a plus de jetons à l'analyse, ou si il n'est que le
&
à l'analyse, ou si il n'y a pas de jetons. Clairement, le corps de la boucle externe pourrait être faite en fonction si vous le souhaitait; il serait judicieux de le faire, même.De sortie:
Notez comment les marqueurs de payer pour eux-mêmes dans les deux derniers exemples. On ne pouvait pas dire à ceux qui sont en dehors sans les marqueurs.
Eh bien, je suppose que vous pouvez faire la plupart des choses peut être fait. Vous êtes sûr que c'est la peine? Donnez-moi quelques minutes pendant que j'y pense. Il n'est pas ... une exigence évidente ... dirons-nous.
Ou sans la variable supplémentaire et strtok pastebin.com/4xHG9yGX
Il sera d'une grande aide pour moi si vous pouvez le comprendre. 🙂
Vous devriez faire la réponse — vous diagnostiqué le problème principal de la première... Mais c'est votre choix.
OriginalL'auteur Jonathan Leffler
vous devriez écrire qqch comme ceci:
strtok()
, vous devez utiliserNULL
comme premier argument pour indiquer que vous êtes en continuant où l'appel précédent arrêté.Ce code est buggé, vous devez remplacer strtok première valeur à l'intérieur de la boucle while à NULL
OriginalL'auteur all0star