Récupération de paramètres

Résolu
cs_TT22 Messages postés 22 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 9 février 2013 - 4 avril 2012 à 11:30
cs_TT22 Messages postés 22 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 9 février 2013 - 4 avril 2012 à 16:00
Bonjour,
Je suis nouveau sur ce forum et j'espère que je ne me suis pas trompé de section
Donc, mon problème est le suivant :
J'ai dans mon code une variable de type char contenant un texte de ce type "Ici quelque chose (données 1,données 2,données 3) et ici encore du texte!".

Je voudrais savoir comment faire pour que mon code retourne 3 variables char, la première contenant "données 1", la deuxième "données 2" et la troisième "données 3".

J'ai essayé plusieurs moyens, mais je n'ai pas réussis à le faire.

Donc, est-ce que quelqu'un pourrait me faire un script qui fais ça ?

Merci d'avance...

5 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
4 avril 2012 à 14:41
Si tu as besoin d'un système généric, alors il te faut des expressions rationnelles (régulières c'est une erreur de traduction courante ;p).

Sinon, si tu as toujours cette forme là, il te suffit de parser toi même la chaîne, ou d'utilise un sscanf.
#include <stdio.h>
#include <string.h>

int main(void)
{
  char a[32];
  char b[32];
  char c[32];

  const char* s = "Ici quelque chose (donnees 1,donnees 2,donnees 3)";
  int res = sscanf(s, "Ici quelque chose (%[^,],%[^,],%[^)]", a, b, c);

  printf("Res = %i.   "%s" "%s" "%s"\n", res, a, b, c);

  return 0;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
3
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
4 avril 2012 à 13:38
Bonjour.

C'est la bonne section :)
Pour répondre à ta question, en C, on ne peut retourner qu'une seule chose.
En revanche, rien ne t'empeche de retourner une structure contenant 3 variables.

Ex:
#include <stdio.h>
#include <string.h>

typedef struct
{
  char a[32];
  char b[32];
  char c[32];
} Tuple;

Tuple getNames(void)
{
  Tuple tuple;

  strcpy(tuple.a, "Coucou");
  strcpy(tuple.b, "Donnee 2");
  strcpy(tuple.c, "Hello");

  return tuple;
}

int main(void)
{
  Tuple tuple = getNames();

  printf("Retour: "%s" "%s" "%s"\n", tuple.a, tuple.b, tuple.c);

  return 0;
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
cs_TT22 Messages postés 22 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 9 février 2013
4 avril 2012 à 13:54
Salut, merci pour ta réponse, mais je pense que j'ai mal expliqué mon problème...

En fait, je un code qui à partir de la variable contenant "Ici quelque chose (données 1,données 2,données 3) et ici encore du texte!" crée 3 variables, la première contenant "données 1", la deuxième "données 2" et la troisième "données 3".

En gros, un code qui lit ce qui est entre les parenthèses puis qui le réparti dans les 3 variables en fonction des séparations par les virgules.
0
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
4 avril 2012 à 14:16
Hello,
Tu peux utiliser les expressions régulières..


@+
Buno, Admin CS
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_TT22 Messages postés 22 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 9 février 2013
4 avril 2012 à 16:00
Merci CptPingu, c'est exactement ce qu'il me fallait !
0
Rejoignez-nous