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

Probleme avec scanf

118 réponses
Avatar
Bakounine
bonjour

je suis en train de faire un petit programme client et serveur qui echange
des messages. Dans cetains messages il y a deux valeur separer par des deux
points.

ex:

valeurun:valeurdeux

j'aimerais savoir si sscanf permet de gerer le separateur : ou faut il
utiliser une autre fonction? j'ai utilise sscanf("%s:%s", var1, var2); mais
ca ne marche pas.

Merci d'avance pour votre reponse.

10 réponses

1 2 3 4 5
Avatar
Bakounine
j'ai utilise sscanf("%s:%s", var1, var2); mais ca ne marche pas.



je me suis trompe en ecrivant:

sscanf(msg, "%s:%s", var1, var2);


sscanf ecrit sur une cible qu'il faut ensuite faire affiché avec une
autre fonction..




sscanf fait une saisie formate depuis une chaine mais y a t'il un moyen de
recuperer les chaines separe par le :


Avatar
Yves ROMAN

bonjour

je suis en train de faire un petit programme client et serveur qui echange
des messages. Dans cetains messages il y a deux valeur separer par des deux
points.

ex:

valeurun:valeurdeux

j'aimerais savoir si sscanf permet de gerer le separateur : ou faut il
utiliser une autre fonction? j'ai utilise sscanf("%s:%s", var1, var2); mais
ca ne marche pas.



Surement si les valeurs contiennet des espaces.
Il faut alors utiliser un syntaxe particulière dans le %s (que je ne connais
pas)

Si ta chaine contient uniquement var1 + ':' + var2, tu peux utiliser strchr() :

char *pt ;
pt = strchr(msg,':') ;
if ( pt != NULL )
{
*pt = '' ;
strcpy(var1,msg) ;
strcpy(var2,pt+1) ;
}

Bien sur, il faut rajouter des controles de tailles, etc...

Avatar
Bakounine
Merci c parfait je vais utiliser ca. Mais si quelqu'un a la solution avec
le sscanf qu'il n'esite pas.
Avatar
Richard Delorme

je suis en train de faire un petit programme client et serveur qui echange
des messages. Dans cetains messages il y a deux valeur separer par des deux
points.

ex:

valeurun:valeurdeux

j'aimerais savoir si sscanf permet de gerer le separateur : ou faut il
utiliser une autre fonction? j'ai utilise sscanf("%s:%s", var1, var2); mais
ca ne marche pas.


sscanf(msg, "[^:]:%s", var1, var2);

--
Richard

Avatar
Horst Kraemer
Bakounine wrote:

bonjour

je suis en train de faire un petit programme client et serveur qui echange
des messages. Dans cetains messages il y a deux valeur separer par des deux
points.

ex:

valeurun:valeurdeux

j'aimerais savoir si sscanf permet de gerer le separateur : ou faut il
utiliser une autre fonction? j'ai utilise sscanf("%s:%s", var1, var2); mais
ca ne marche pas.


Parce que sscanf(msg,"%s:"%s",p1,p2) ne dit pas: arrêter la lecture de
la premiere chaîne avant le premier ":". Le premier "%s" lit tout si
la chaine entière ne contient aucun espace.

Quand la syntaxe de la ligne est *exactement*

|xxxxxxxxx:yyyyyyyyyy|

sans aucune espace ou TAB alors

sscanf(buf,"%[^:]:%s",pc1,pc2)

fait ce que tu attends. Voir la documentation du format "%[...]"

--
Horst

Avatar
Emmanuel Delahaye
Richard Delorme wrote on 25/04/05 :
sscanf(msg, "[^:]:%s", var1, var2);


Marche pas...

#include <stdio.h>

int main (void)
{
char const s[] = "valeurun:valeurdeux";

char var1[sizeof s];
char var2[sizeof s];

int n = sscanf (s, "[^:]:%s", var1, var2);

if (n == 2)
{
printf ("'%s' '%s'n", var1, var2);
}
return 0;
}

--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"There are 10 types of people in the world today;
those that understand binary, and those that dont."

Avatar
Emmanuel Delahaye
Horst Kraemer wrote on 25/04/05 :
sscanf(buf,"%[^:]:%s",pc1,pc2)


Nous avons un gagnant!

#include <stdio.h>

int main (void)
{
char const s[] = "valeurun:valeurdeux";

char var1[sizeof s];
char var2[sizeof s];

int n = sscanf(s,"%[^:]:%s",var1, var2);


if (n == 2)
{
printf ("'%s' '%s'n", var1, var2);
}
return 0;
}

Bravo Horst, tu peux revenir la semaine prochaine!

--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"There are 10 types of people in the world today;
those that understand binary, and those that dont."

Avatar
hibiki
bonjour

je suis en train de faire un petit programme client et serveur qui echange
des messages. Dans cetains messages il y a deux valeur separer par des deux
points.

ex:

valeurun:valeurdeux

j'aimerais savoir si sscanf permet de gerer le separateur : ou faut il
utiliser une autre fonction? j'ai utilise sscanf("%s:%s", var1, var2); mais
ca ne marche pas.

Merci d'avance pour votre reponse.


sscanf(buffer, "%s:%s", var1, var2);
Si ça ne marche pas c'est peut-être que la chaîne doit se terminer par
n ou

--
Salutations,

Joachim Naulet

06 14 90 06 21
http://jnaulet.no-ip.com

Avatar
Emmanuel Delahaye
hibiki wrote on 25/04/05 :
sscanf(buffer, "%s:%s", var1, var2);


Marche pas. La bonne réponse a été donnée par Horst. (C'est pas
trivial, et les vrais spécialistes de *scanf() sont rares, alors à
encadrer...)

Si ça ne marche pas c'est peut-être que la chaîne doit se terminer par n ou



Rien à voir. Une chaine doit toujours se terminer par un 0 dans les
limite du tableau (sinon, c'est un simple tableau de char).

--
Emmanuel
The C-FAQ: http://www.eskimo.com/~scs/C-faq/faq.html
The C-library: http://www.dinkumware.com/refxc.html

"There are 10 types of people in the world today;
those that understand binary, and those that dont."

Avatar
Charlie Gordon
"Bakounine" wrote in message
news:
bonjour

je suis en train de faire un petit programme client et serveur qui echange
des messages. Dans cetains messages il y a deux valeur separer par des deux
points.

ex:

valeurun:valeurdeux

j'aimerais savoir si sscanf permet de gerer le separateur : ou faut il
utiliser une autre fonction? j'ai utilise sscanf("%s:%s", var1, var2); mais
ca ne marche pas.

Merci d'avance pour votre reponse.


scanf : just say no.

Chqrlie.

1 2 3 4 5