Obtenez de l'indice des sous-chaîne
J'ai char * source, et je veux en extraire subsrting, que je sais, c'est le début de symboles "abc", et se termine lorsque la source se termine. Avec strstr je peux obtenir le poiner, mais pas la position, et sans position je ne sais pas la longueur de la sous-chaîne. Comment puis-je obtenir l'index de la sous-chaîne dans la pure C?
- Vous pouvez probablement faire ce que vous voulez juste avec les pointeurs, sans se soucier de la longueur.
- il n'y a aucune raison pourquoi vous ne pouvez pas voter (il y a peut-être une limite à la fréquence)
Vous devez vous connecter pour publier un commentaire.
Utiliser le pointeur de la soustraction.
char *str = "abracabcabcabcabc"
🙂newptr - source
vous donnera le décalage.source = "abracadabcabcabcabc"
🙂Ici est une version C de la fonction strpos avec une fonction de compensation...
Si vous avez le pointeur vers le premier caractère de la sous-chaîne, et la chaîne se termine à la fin de la chaîne source, puis:
strlen(substring)
vous donnera sa longueur.substring - source
vous donnera l'index de début.Formellement les autres sont de droite
substring - source
est en effet le début de l'indice. Mais vous n'aurez pas besoin: vous pouvez l'utiliser comme index danssource
. Ainsi, le compilateur calculesource + (substring - source)
comme la nouvelle adresse - mais justesubstring
serait assez pour presque tous les cas d'utilisation.Juste un conseil pour l'optimisation et de simplification.
Une fonction pour couper un mot d'une chaîne de caractères par un début et une fin mot