Récupération de paramètres [Résolu]

Signaler
Messages postés
22
Date d'inscription
mercredi 4 avril 2012
Statut
Membre
Dernière intervention
9 février 2013
-
Messages postés
22
Date d'inscription
mercredi 4 avril 2012
Statut
Membre
Dernière intervention
9 février 2013
-
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

Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
120
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
Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
120
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
Messages postés
22
Date d'inscription
mercredi 4 avril 2012
Statut
Membre
Dernière intervention
9 février 2013

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.
Messages postés
15028
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
10 mai 2021
94
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...
Messages postés
22
Date d'inscription
mercredi 4 avril 2012
Statut
Membre
Dernière intervention
9 février 2013

Merci CptPingu, c'est exactement ce qu'il me fallait !