sscanf jusqu'à ce qu'il atteigne une virgule
Je suis en train de scanf des mots et des nombres à partir d'une chaîne ressemble à: "bonjour tout le monde, j', 287876, 6.0" <-- cette chaîne est stockée dans un char
array (string)
Ce que j'ai à faire est de diviser les choses et de les affecter à des variables différentes, de sorte qu'il serait comme
char a = "hello"
char b = "world"
char c = "I"
unsigned long d = 287876
float e = 6.0
Je sais que la pratique régulière de scanf s'arrête de lire depuis l'entrée standard stdin lorsqu'il atteint un espace blanc. J'ai donc pensé qu'il pourrait être une façon de faire de sscanf arrêter de lire quand il atteint une "," (virgule)
J'ai été d'explorer la bibliothèque pour trouver un format de sscanf pour lire uniquement l'alphabet et les chiffres. Je ne pouvais pas trouver une telle chose, peut-être que je devrais regarder une fois de plus.
De l'aide?
Merci d'avance 🙂
- e.g)
"%[^,], %[^,], %[^,], %lu, %f"
- l'ordre des variables dans la chaîne est-elle fixe? Je veux dire, C'est toujours:
string, string, char, int, float
? - ouais, je pense que cela va fonctionner: "%[^,], %[^,], %[^,], %lu, %f"
- Comment je peux faire la même façon pour la numérisation jusqu'à ce qu'elle correspond à une sous-chaîne particulière?
- Comment je peux faire la même façon pour la numérisation jusqu'à ce qu'elle correspond à une sous-chaîne particulière?
scanf
ne peut pas être spécifiée que lire jusqu'à correspondre à une partie particulière de la chaîne. vous pouvez utiliserstrstr
pour trouver de particulier de la partie de la chaîne. Vous devriez poster des questions plutôt que d'un commentaire.- mais
ststr()
retournera un pointeur sur la sous-chaîne n'est-ce pas? Je veux correspondre jusqu'à ce qu'une sous-chaîne : disons que j'ai"x -fx some stuff compressed-encoding=some mime type"
et je veux que la partie de chaîne avant de" compressed-encoding="
. - copier jusqu'à la position du pointeur.
- il n'y a vraiment pas de
%*^
sscanf comme solution? - vous ne pouvez pas parce
[...]
est jeu de caractères spécifié, pas de chaîne(chaîne de caractères). - Il n'est pas possible de ces spécifié dans
scanf
. - Cette interaction sera nuisance pour cet article. encore une fois, Vous devez être inscrit comme votre question.
Vous devez vous connecter pour publier un commentaire.
Si l'ordre des variables dans la chaîne est fixe, je veux dire, C'est toujours:
l'utilisation suivantes spécificateur de format dans
sscanf()
:Cet exemple à l'aide de
strtok
devrait être utile:Consultez la documentation de
strtok
et/oustrtok_r
strtok_r
est pour les systèmes unix seulement?strtok_r
saveur est pris en charge, il est thread-safe et la récursivité sûr, pas un état global de la fonction commestrtok
-- de toute façon... une variante destrtok
ou une autre, est une solution au problème.strtok_r
estPOSIX.1-2001