Est-il un moyen de compter les jetons en C?
Je suis en utilisant strtok
de découper une chaîne en jetons. Personne ne sait de toute fonction qui compte le nombre de jetons?
J'ai une chaîne de commande et j'ai besoin de le diviser et de passer les arguments à execve()
.
Merci!
Modifier
execve
des arguments comme char**
, j'ai donc besoin d'allouer un tableau de pointeurs. Je ne sais pas combien d'allouer sans savoir combien de jetons sont là.
strtok()
et incrémenter un compteur?Et
realloc
devrait résoudre le problème de ne pas savoir la taille à l'avance.OriginalL'auteur James | 2012-10-25
Vous devez vous connecter pour publier un commentaire.
Une approche pourrait être de simplement utiliser
strtok
avec un compteur. Toutefois, pour modifier la chaîne d'origine.Une autre approche consiste à utiliser
strchr
dans une boucle, comme ceci:Si vous avez plusieurs séparateurs, utilisez
strpbrk
:Vous pouvez utiliser
strpbrk
dans ce cas.Correct mais pas strchr();
OK, j'ai modifié ma réponse à inclure
strpbrk
. Merci pour vos commentaires.Désolé d'interrompre comme ça, mais est-ce semblait être la meilleure réponse que j'ai trouvé. Est-il un moyen pour obtenir la longueur de chaque segment entre le délimiteur. Merci encore pour cette réponse. Cheers @nneonneo
OriginalL'auteur nneonneo
Que le nombre de jetons n'est rien, mais un de plus que la fréquence de l'apparition de la délimiteur utilisé. Si votre question se résume à trouver aucun. des temps d'occurrence d'un caractère dans une chaîne
dire le délimiteur utilisé dans la fonction strtok dans c'
Pas. de jetons serait même que le comte+1
Je crois que l'on peut utiliser la même procédure et de prendre soin de l'angle cas
OriginalL'auteur router
Ici est une version basée sur
strtok
qui ne modifie pas la chaîne d'origine, mais un temps de copie. Cette version fonctionne pour n'importe quelle combinaison d'onglets et de l'espace, les caractères utilisés comme des jetons de séparateurs. La fonction estUn appel de fonction peut être
De sortie est
OriginalL'auteur gambarimas87