Comment puis-je trouver l'indice d'un caractère dans une chaîne de caractères en C?
Supposons que j'ai une chaîne "qwerty"
et je souhaite trouver la position d'index de l' e
caractère. (Dans ce cas, l'indice serait 2
)
Comment puis-je le faire en C?
J'ai trouvé le strchr
fonction, mais elle renvoie un pointeur sur un caractère et à ne pas l'index.
- double possible de la Chaîne.indexOf fonction en C
Vous devez vous connecter pour publier un commentaire.
Juste soustraire l'adresse de la chaîne à partir de ce que strchr retourne:
À noter que le résultat est égal à zéro, de sorte que dans l'exemple ci-dessus, il sera 2.
size_t
est probablement le plus évident à utiliser, car il est assez grand pour tenir la longueur de n'importe quel objet (et donc n'importe quelle chaîne). Le réel problème avec ce code, c'est que vous devriez avoirif (e) { } else { }
pour gérer le cas lorsque le caractère n'est pas trouvé au sein de la chaîne.int
est mal, et tous ces débutant exemples juste leur apprendre la mauvaise attitude.C
compilateur utilisez-vous?Vous pouvez également utiliser
strcspn(string, "e")
mais cela peut être beaucoup plus lent, car il est capable de gérer de recherche de plusieurs caractères. À l'aide destrchr
et en soustrayant le pointeur est le meilleur moyen.Ce code est actuellement pas testé, mais il démontre le bon concept.
Ce sujet:
copie à e de préserver la chaîne d'origine, je suppose que si vous ne vous inquiétez pas, vous pourriez juste fonctionner sur *chaîne
Cela devrait le faire: