Comment extraire des nombres de chaîne dans c?
Dire que j'ai une chaîne comme ab234cid*(s349*(20kd
et je veux extraire tous les numéros 234, 349, 20
que dois-je faire ?
source d'informationauteur CDT | 2012-11-15
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire avec
strtol
comme ceci:Lien vers ideone.
Une solution possible à l'aide de
sscanf()
et d'analyse des ensembles:où
%*[^0123456789]
signifie ignorer d'entrée jusqu'à ce qu'un chiffre est trouvé. Voir démo à http://ideone.com/2hB4UW .Ou, si le nombre de chiffres est inconnu, vous pouvez utiliser
%n
spécificateur d'enregistrer la dernière position de lecture dans la mémoire tampon:ici après une solution simple à l'aide de
sscanf
:Si les nombres sont seprated par des espaces dans la chaîne alors vous pouvez utiliser sscanf(). Depuis, il n'est pas le cas de votre exemple,
vous devez le faire vous-même:
}
Faire une machine d'état qui fonctionne sur un principe de base: c'est le caractère actuel un certain nombre.
current_number := current_number * 10 + nombre;
Optimisations sont possibles.
Ou vous pouvez faire une simple fonction comme ceci: