Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ignorer des caractères avec scanf

3 réponses
Avatar
michel
Bonjour,

j'ai une date au format :

"Fri, 10 Dec 2014 20:40:50 +0000"

Je voudrais récupérer "10 Dec 2014 20:40:50"
J'ai vu qu on pouvait ignorer des caractères avec "%*", mais ça plante
(violaton d'accès)

Est-ce possible avec scanf() ?
Sinon, je découperai les espaces avec strstr()

Merci.

3 réponses

Avatar
Antoine Leca
Le 16/12/2014 11:09, michel écrivit :
j'ai une date au format :
"Fri, 10 Dec 2014 20:40:50 +0000"

Je voudrais récupérer "10 Dec 2014 20:40:50"
J'ai vu qu on pouvait ignorer des caractères avec "%*", mais ça plante
(violaton d'accès)



Plutôt que de nous expliquer ce que l'on peut faire, peux-tu nous
montrer ton code qui plante ? Il y a tellement de raison pour que scanf
ne marche pas, ce sera beaucoup plus simple d'expliquer comment résoudre
ton problème.


Est-ce possible avec scanf() ?



ÀMHA, il faut utiliser sscanf.
if( 6!=sscanf(entree, "%*[A-Za-z],%d %3s%d%d:%d:%d %*[-+0-9]",
&j, &l, &a, &h, &m, &s) ) deposer_plainte();

Sinon, je découperai les espaces avec strstr()



Tu veux dire strtok() ?


Antoine
Avatar
michel
Antoine Leca a écrit :
Le 16/12/2014 11:09, michel écrivit :
j'ai une date au format :
"Fri, 10 Dec 2014 20:40:50 +0000"

Je voudrais récupérer "10 Dec 2014 20:40:50"
J'ai vu qu on pouvait ignorer des caractères avec "%*", mais ça plante
(violaton d'accès)



Plutôt que de nous expliquer ce que l'on peut faire, peux-tu nous
montrer ton code qui plante ? Il y a tellement de raison pour que scanf
ne marche pas, ce sera beaucoup plus simple d'expliquer comment résoudre
ton problème.


Est-ce possible avec scanf() ?



ÀMHA, il faut utiliser sscanf.
if( 6!=sscanf(entree, "%*[A-Za-z],%d %3s%d%d:%d:%d %*[-+0-9]",
&j, &l, &a, &h, &m, &s) ) deposer_plainte();




Merci...
En fait ça marchait correctement, j'avais testé avec
"%*5c%2d %3s %4d %2d:%2d:%2d%*6c",
mais je testais avec sscanf_s() où là ça plante.
Mais avec sscanf(), pas de problème.
Avatar
Antoine Leca
Le 16/12/2014 12:14, michel écrivit :
mais je testais avec sscanf_s() où là ça plante.




Avec tous les bons arguments du bon type et dans le bon ordre, sscanf_s
marche tout aussi bien que sscanf avec %* (testé avec VC9).

Comme cette fonction est récente, il est possible que tu sois tombé sur
un bogue spécifique de l'implémentation de la bibliothèque standard que
tu utilises ; ou un message incorrect du compiler (pas de
__attribute__((__format__(__scanf_s__,n,p))) avec GCC, par exemple) ?

Antoine