Comment puis-je récupérer des string séparé par des espaces

Bonjour

J'aimerais envoyer une commande:

cmd opt text

dans mon terminal

void serialhwread(){
  
  i=0;
  
  if (Serial.available() > 0){            
    while (Serial.available() > 0) {
      inSerial[i]=(Serial.read());
      delay(10);
      i++;      
     }
    
    inSerial[i]='\0';
    
    if(!strncmp(inSerial,"sms",3)){
      sscanf(inSerial,"%*s%s%*[ ]%[^\n]",cmd, opt, text);

      Serial.println(cmd);
      Serial.println(opt);
      Serial.println(text);

    }
    inSerial[0]='\0';
    }
} // End serialhwread

Mon problème il est là

  if(!strncmp(inSerial,"sms",3)){
      sscanf(inSerial,"%*s%s%*[ ]%[^\n]",cmd, opt, text);

      Serial.println(cmd);
      Serial.println(opt);
      Serial.println(text);

    }

Je n'arrive pas à récupérer les 3 mots séparé par des espaces et je suppose que l'erreu vient de là

%*s%s%*[ ]%[^\n]

J'ai aucune idée comment corrigé ceci

Pourriez-vous m'aider?

Milles mercis

D'accord mais alors pourquoi ca, ca ne marche pas

sscanf(inSerial,"%s%s%*[ ]%[^\n]",command,pos_char,sms_text);

      Serial.println(command);
      Serial.println(pos_char);
      Serial.println(sms_text);

Si je tape

sms 2 coucou

Le serial print devrait m'afficher

sms 2 coucou

Je ne me souviens plus j'ai ca, mais c'est dans le ca ou il y a deux espaes. Il faut qu'il ignore tout ce qu'il y a après le troisème mots %*[ ]%[^\n]

Si je tape

sms 2 coucouc

dans mon terminal

les serialString m'affichent

sms 3% {vide}

A ma connaissance la chaîne de format en C ne gère pas les expressions régulière.

Tu pourrais je pense faire quelque chose avec cette méthode : findUntil()

strtok() ou scanf("%s %s %s");

Comme déjà dit, les expressions régulières ne fonctionnent pas.

Si tu tiens absolument à utiliser une regex, ceci pourrait t'intéresser ;)

http://www.gammon.com.au/forum/?id=11063

certes, mais utiliser une regexp pour des éléments séparés par un caractère est un peu lourd, surtout sur une arduino ;-)