IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Comment extraire une chaine de caractères


Sujet :

C

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut Comment extraire une chaine de caractères
    Bonjour à tous,

    J'ai besoin d'extraire une chaine de caractere qui est separe par des espace comme on oeut le faire , en PHP, avec explode()

    J'ai declaré une variable

    Je recupere un chaine de caractere dans un variable de type char.
    La chaine est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char inSerial[20];
    ... code...
    Serial.print(serial)
    le Serial.print() affiche
    dirw3 +415678 toto
    J'ai besoin de recupérer "+415678"

    Comment puis-je recupérer +415678 proprement?

    Y a t il une fonction qui me permets de le faire?

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Si tu veux la récupérer sous la forme d'une chaine de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       char inSerial[] = "dirw3 +415678 toto"; 
       char res[20];
       sscanf(inSerial,"%*s%s",res);  // res = "+415678"
    et sous la forme d'un entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       char inSerial[] = "dirw3 +415678 toto"; 
       int i;
       sscanf(inSerial,"%*s%d",&i);  // i = 415678

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Salut Diogene

    Merci beaucoup pour ton aide, mais malheureusement ca ne marche pouas .

    Mais ca me semble très proche et c'est vraiment mieux qu'avant.

    Voici comment j'ai reproduit ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
        if(!strncmp(inSerial,"dirw",4)){
          #ifdef DEBUG
            Serial.println(F("\nWRITING TO THE DIRECTORY"));
            Serial.println(F("--------------------------------"));
            Serial.println(F("Script not ready yet!"));
          #endif
     
           if(inSerial[4] >= '1' && inSerial[4] <= '9') {
     
             char nu[PHONESIZE]; // PHONESIZE = 20
     
             sscanf(inSerial,"%*s%",nu);
             /* ANCIEN CODE POUR L?EXTRACTION
            char* nu="\0";
            for(byte i=0; i < 25; i++){
              if(i > 5){
                //Serial.print(inSerial[i]);
                //strcat(nu,(const char *)inSerial[i]);
                nu=nu+inSerial[i];
                if(inSerial[i]  == ' ' || inSerial[i]  == '\0'){
                  Serial.println(F("\nOut"));
                  break;
                }
              }
            }
            */
            Serial.print(F("Valeur extraite : "));
              Serial.println(nu);
     
          } else {
              Serial.println(F("Entrer une valeur entre 1 et 9")); // pas bon
          }
     
          Serial.println("");
     
          #ifdef DEBUG
            enterCommand();
           #endif
     
        }
    nu m'affiche
    Valeur extraite : \ëÇ8P
    alors que j'ai taper dans mpon terminal
    Si je tape (ce qui plus proche a ce que l'utilisateur tapera, puisqu'il s'agit de recupérer le numero de téléphone entrer par l'utilisateur pour l'enregistrer numéro dans une position du directory)

    "dirw2 +41221234567" ou
    "dirw2 +41221234567 toto"

    Il me retourne la meme chose
    Valeur extraite : \ëÇ8P

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Autant faudrait-il recopier la bonne chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(inSerial,"%*s%s",nu);
    La première partie %*s avec l'étoile signifie que l'on ignore le premier mot (ici dirw3).
    Puis on lit notre deuxième +415678 avec %s.

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Oups!
    Super ça marche!!!!!

    Merciiiiii.

    J'aimerais juste comprendre un truc. Qu'es-ce qui dit que les espaces sont les délimiteur.

    Et si je voulais faire plus compliqué en voulant aussi récupérer "toto", je suis sur que plus tard, j'en aurai besoin

    dirw3 +41221234567 toto

  6. #6
    Invité
    Invité(e)
    Par défaut
    Il suffit de simplement rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(inSerial,"%*s%s%s",nu, toto);
    N'hésite pas à lire la page man ainsi que le tutoriel Scanf démythifiée où tu y verras entre autres :
    s
    Correspond à une séquence de caractères différents des caractères blancs. Le pointeur correspondant doit être du type char *, et la chaine doit être assez large pour accueillir toute la séquence, ainsi que le caractère NUL final. La conversion s'arrête au premier caractère blanc, ou à la longueur maximale du champ.

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Ok super,

    Milles mercis. Ca fonctionne.

    Oufffsss

  8. #8
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Bonjour,

    J'aurais encore voulu savoir un truc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(inSerial,"%*s%s%s",nu, toto);
    Comment puis-je modifier pour qu'il ne prenne pas en compte les esapce après le deuieme parametre 'toto'

    Par exempl

    sms 3 toto est dans le bain
    nu affichera 3
    toto affichera 'toto est dans le bain'

    Dans mon terminal. j'ai essayé d'entrer
    sms 3 'toto est dans le bain'
    mais je ne récupère que
    'toto

  9. #9
    Membre averti
    Homme Profil pro
    Cadre informatique
    Inscrit en
    Avril 2013
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 183
    Points : 435
    Points
    435
    Par défaut
    Normal car comme te l'a dit Winjerome, le sscanf s’arrête aux caractères blancs ^^ Si tu as la forme sms 3 "texte" et que cela reste de cette forme, pourquoi ne pas juste omettre les premiers caractères? Sinon je crois me souvenir qu'il y a une fonction qui peut faire, je vais me renseigner

  10. #10
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Ton problème est alors d'analyser une ligne composée :
    -Pour commencer :
    1- éventuellement de caractères <blancs> à ignorer
    2- d'une chaine sans <blancs> à ignorer
    Cette partie est faite par le "%*s"

    -ensuite
    3- de caractères <blancs> à ignorer
    4- d'une chaine sans <blancs> à lire
    Cette partie est faite par le "%s"
    -pour terminer
    5- de caractères <blancs> à ignorer
    6- d'une chaine, ne commençant pas par un <blanc>, avec éventuellement des <blancs> à lire.  
    La chaine est terminée par un '\n' à ignorer ou par le '\0' terminal. 
    On ne peut plus utiliser le format %s et on utilisera le format %[] qui permet de traiter des chaines comportant des <blancs>
    Le format %*[ ] (il y a un blanc entre les crochets) va permettre de lire tous les blancs et de les ignorer (à cause de *) (étape 5)
    Le format %[^\n] va lire ensuite tous les caractères différents de '\n' (ou jusqu'à la fin de la chaine signalée par le 0 terminal) et les stocker (étape 6).

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        char inSerial[] = " sms 3 toto est dans le bain";
        char nu[10];
        char toto[50];
        sscanf(inSerial,"%*s%s%*[ ]%[^\n]",nu, toto);
    Attention, si la chaine est
    char inSerial[] = " sms 3 toto est dans le bain ";, alors toto contiendra "toto est dans le bain ".

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    C'est super merci.
    je vais essayé tout ca.

    Il y a juste un point que je dois pas oublié de penser.

    Pour le moement, j'essaye mon code avec le terminal, mais ensuite, c'est pas SMS que je vais envoyer mes "order".

    Donc pour le momenet je lis ce qui sors du terminal, mais en suite, j'ai un code qui va recupérer le texte envoyé par un SMS.
    Le format %[^\n] va lire ensuite tous les caractères différents de '\n' (ou jusqu'à la fin de la chaine signalée par le 0 terminal) et les stocker (étape 6).
    La chaine est terminée par un '\n' à ignorer ou par le '\0' terminal.
    Es-ce que ca rentre aussi encompte si quand je n'utiliserai plus le terminal?
    Quoi, il me semble que oui, car un char se termine aussi par un \0. Donc théoriquement, je n'ai pas à me soucier de quelque chose pour plus tard... quand je n'utiliserai plus le terminal

  12. #12
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    J'aimerais juste corrigé un truc

    Dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char inSerial[] = " sms 3 toto est dans le bain";
        char nu[10];
        char toto[50];
       sscanf(inSerial,"%*s%s%s",nu, toto);
    nu prendra la valeur de 3 et
    toto prendra la valeur de "toto est dans le bain"

    Mais comment puis avoir "sms" dans une vriable aussi.

    On est d'accord que la partie correspondanr à "sms" est %*s

    J'avais essayé d'ajouter commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(inSerial,"%*s%s%s",commande, nu, toto);
    pour que commande affiche "sms" => %*s
    du affiche 3 => %s
    toto affiche "toto est dans le train => %s

  13. #13
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 685
    Points
    13 685
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(inSerial,"%*s%s%s",commande, nu, toto);
    Si tout compilateur est bien réglé, cad si tu as activé les warnings, tu devrais avoir un message du genre :
    D:\...\main.c|12|warning: too many arguments for format [-Wformat-extra-args]|
    A ce niveau-là, tu devrais déjà te douter de quelque chose...

    On est d'accord que la partie correspondanr à "sms" est %*s
    Oui.

    Mais.....

    Soit tu n'as pas compris ce que diogene racontait, soit tu n'as pas vraiment lu. Extraits :
    -Pour commencer :
    1- éventuellement de caractères <blancs> à ignorer
    2- d'une chaine sans <blancs> à ignorer
    Cette partie est faite par le "%*s"
    Le format %*[ ] (il y a un blanc entre les crochets) va permettre de lire tous les blancs et de les ignorer (à cause de *) (étape 5)
    L'étoile là fait pour ignorer ce qui est lu. Si tu rajoutes un paramètre pour stocker la chaine de commande, il ne faut donc plus ignorer la conversion qui lui correspond !!!

    De plus, tu n'as pas appliqué :
    Le format %[^\n] va lire ensuite tous les caractères différents de '\n' (ou jusqu'à la fin de la chaine signalée par le 0 terminal) et les stocker (étape 6).


    Donc au final, il te faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    #include <stdio.h>
     
    int main(void)
    {
        char inSerial[] = " sms 3 toto est dans le bain";
        char command[20];
        char number[10];
        char content[50];
     
        sscanf(inSerial,"%s%s%[^\n]", command, number, content);
     
        puts(command);
        puts(number);
        puts(content);
        return 0;
    }

  14. #14
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Merci pour ta réponse, mais je reste confu sur ceci

    D:\...\main.c|12|warning: too many arguments for format [-Wformat-extra-args]|
    Si je découpe ca avec des {}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(inSerial,"{%*s}{%s}{%s}",commande, nu, toto);
    ca fait bien trois?
    J'ai aussi compris que si remplace le dernier %s par %[^\n], les expace seront ignorer, donc je pourrai afficher une phrase.

    Je ne comprends aussi pas pourquoi en enlevant l'étoile du premier, comme tu le proposes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sscanf(inSerial,"%s%s%[^\n]", command, number, content);
    ca permets de recupérer le "sms". Si j'ai bien compris que si je laisse le *, il va permettre de lire tous les blanc, donc les espace et de les ignoer, donc il va lire TOUT le texte de "sms 3 toto est dans le bain"

    Bref dans mon cas de figure, j'ai vraiment trois élément que je représente avec des {}

    {sms} {3} {texe text tetxe}
    J'ai besoin d'avoir sms dans la variable command, le droit dans la variable param, et le reste dans la variable content.

    Mais ceci dit que fait exctement puts(), j'ai lu la doc, mais j'ai pas trop comrpis excatement.

    C'est un peu comme strcpy()?

  15. #15
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 685
    Points
    13 685
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pierrot10 Voir le message
    Merci pour ta réponse, mais je reste confu sur ceci
    Je te conseille de relire la discussion ci-dessus, tout est expliqué. Prends ton temps et analyse bien. Tu devrais y arriver Indice : * ne sert pas à ignorer les blancs, mais à ignorer le résultat d'une conversion.


    Mais ceci dit que fait exctement puts(), j'ai lu la doc, mais j'ai pas trop comrpis excatement.
    C'est un peu comme strcpy()?
    http://man.developpez.com/man3/puts.3.php
    puts() écrit la chaîne de caractères s et un retour-chariot final sur stdout.
    Cela n'a donc rien à voir avec strcpy() mais avec printf(). As-tu exécuté le code ? Tu l'aurais constaté.....

  16. #16
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Je m'excuse mais je n'arrive pas comprendre puts()

    J'ai lu et je comprend que ca écris la chaine de caractere et un retour chariot.

    Mais si ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sscanf(inSerial,"%s%s%[^\n]", command, number, content);
    découpe le message et "rempli" les variabée command, number et content, pourquoi dois-je encore utiliser puts.
    Je dois encore ajouter une librairie?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <stdio.h> // because of puts
    Mais une question bete, puts c'est agi un peu comme Serial.print() ?

  17. #17
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    Alors en effet, je suis confu. J'ai réussi a essayer le code
    et ca marche avec puts et sans

    Voici le code plus en détail
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    /*************************************** 
     *****      READ IF NEW SMS      ********
     ***************************************/
      pos=sms.IsSMSPresent(SMS_ALL);
      //Serial.println((int)pos);
     
      if((int)pos>0&&(int)pos<=20){
        #ifdef DEBUG
          Serial.println(F("\nNEW SMS"));
          Serial.println(F("--------------------------------"));
        #endif
        Serial.print(F("In position "));
        Serial.println((int)pos);
     
        message[0]='\0';
     
        sms.GetSMS((int)pos,number,message,180);
        Serial.print(F("From : "));
        Serial.println(number);
        Serial.println(message);
        Serial.println(F("- - - - - - - - - - - - - - - -"));
     
        if(strstr(message,"batt")){
          CheckBattery(ownerPos);
        }
     
     
        sscanf(message,"%s%s%[^\n]",command, param,sms_text);
        /* Meme quand je commente ceci, les serial.print(), ci-dessous, affiche un résultat.
        puts(command);
        puts(param);
        puts(sms_text);
        */
        Serial.println(command);
        Serial.println(param);
        Serial.println(sms_text);
     
        Serial.println(F("- - - - - - - - - - - - - - - -"));
     
     
       //sms.DeleteSMS((int)pos);
     }
    Par comntre ce qui m'embete, c'est que text_sms m'affiche un espace avant le text
    RER
    4
    gut
    Quand j'envoie un sms à mon mudule avec ce message "RER 4 gut"

    command affiche "RER"
    param affiche "4"
    text_sms affiche " gut" (J'aimerais qu'il ne tienne pas compte de l'expace)

    que j'utilise ou pas puts.
    (je m'excuse si j'ai du mal à comprendre

  18. #18
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 098
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 098
    Points : 946
    Points
    946
    Par défaut
    J'ai résolu mon problème comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sscanf(message,"%s%s%*[ ]%[^\n]",command,param,sms_text);
     
          puts(command);
          puts(param);
          puts(sms_text);
    Quand pensez-vous. En tout ca, ca me retoiurne ce que je souhaite.

    Cependant, je m'excuse, mais je n'arrive pas comprend puts() car quand je fais ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    sscanf(message,"%s%s%*[ ]%[^\n]",command,param,sms_text);
     
          puts(command);
          puts(param);
          puts(sms_text);
     
    #ifdef DEBUG
            Serial.println(command);
            Serial.println(param);
            Serial.println(sms_text);
            Serial.println(F("- - - - - - - - - - - - - - - -"));
          #endif
    ou ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    sscanf(message,"%s%s%*[ ]%[^\n]",command,param,sms_text);
     /* 
          puts(command);
          puts(param);
          puts(sms_text);
    */
    #ifdef DEBUG
            Serial.println(command);
            Serial.println(param);
            Serial.println(sms_text);
            Serial.println(F("- - - - - - - - - - - - - - - -"));
          #endif
    Dans mes deux cas, les Serial.print() retournes les bonnes valeurs et si j'explote 'command','param' ou 'sms_text' dans une autre fonction, ca fonctionne aussi.

    Donc je me demande vraiment a que fait puts()??

  19. #19
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 483
    Points : 13 685
    Points
    13 685
    Billets dans le blog
    1
    Par défaut
    Auto-citation

    http://man.developpez.com/man3/puts.3.php
    Citation:
    puts() écrit la chaîne de caractères s et un retour-chariot final sur stdout.
    puts() écrit une chaine de caractères sur stdout, stdout étant le flux associé à l'écran. Ton "problème" est que tu travailles sur Arduino et le flux stdout doit être relié.... à rien. La fonction n'a donc pas d'effet. Si tu essayes sur PC, tu verras.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C#] Comment inverser une chaine de caractères ?
    Par just1980 dans le forum Contribuez
    Réponses: 6
    Dernier message: 01/05/2011, 20h35
  2. Comment extraire une chaine de caractère?
    Par moiguigui60 dans le forum C#
    Réponses: 6
    Dernier message: 03/11/2010, 11h46
  3. Réponses: 2
    Dernier message: 03/10/2005, 16h23
  4. Réponses: 2
    Dernier message: 14/01/2005, 15h40
  5. comment vider une chaine de caractère
    Par gaut dans le forum C
    Réponses: 13
    Dernier message: 12/09/2003, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo