Découper un texte avec Arduino
Fermé
Nems
-
28 sept. 2018 à 06:31
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 - 28 sept. 2018 à 14:10
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 - 28 sept. 2018 à 14:10
Bonjour j'ai un problème face à moi , jai une variable qui contient un texte (je programme avec Arduino) le texte ressemble a ça: 12345,12345,12345,12345 (c'est un exemple)
Je veux pouvoir afficher chaque bout de texte séparer par une virgule. Mon programme ne doit pas être gourmand en mémoire car j'ai un long programme.
Je veux pouvoir afficher chaque bout de texte séparer par une virgule. Mon programme ne doit pas être gourmand en mémoire car j'ai un long programme.
A voir également:
- Découper un texte avec Arduino
- Comment découper un pdf - Guide
- Texte de chanson gratuit pdf - Télécharger - Vie quotidienne
- Excel cellule couleur si condition texte - Guide
- Transcription audio en texte word gratuit - Guide
- Découper mp4 - Guide
1 réponse
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 104
Modifié le 28 sept. 2018 à 10:28
Modifié le 28 sept. 2018 à 10:28
Salut Nems,
En C standard, on peut faire cela avec strtok(), cette fonction semblant disponible dans le langage C/C++ sur lequel se base Arduino (je ne peux pas tester cependant).
donne :
La fonction standard
Dal
En C standard, on peut faire cela avec strtok(), cette fonction semblant disponible dans le langage C/C++ sur lequel se base Arduino (je ne peux pas tester cependant).
#include <stdio.h> #include <string.h> int main(void) { char texte[255] = "12345,12345,12345,12345"; char * p; p = strtok(texte, ","); while (p != NULL) { printf("%s\n",p); p = strtok(NULL, ","); } return 0; }
donne :
12345 12345 12345 12345
La fonction standard
strtok()opère en écrasant les caractères séparateurs et en les remplaçant avec des
'\0'terminant chaque sous-chaîne identifiée. Le contenu originel en mémoire est donc altéré, mais cela te permet d'identifier et de traiter les sous-chaînes sans avoir besoin de mémoire supplémentaire, en utilisant juste une variable pointeur pour accéder aux sous-chaînes successives.
Dal
28 sept. 2018 à 12:34
Modifié le 28 sept. 2018 à 13:22
28 sept. 2018 à 13:40
Modifié le 28 sept. 2018 à 14:17
le résultat étant :
Dans un code réel, il faudrait vérifier qu'il n'y a pas plus de 4 sous-chaînes, s'il y en a moins décider aussi quoi faire, et si le texte comprend un nombre indéterminé de sous-chaînes, faire une allocation dynamique, avec malloc et des realloc pour étendre la mémoire au fur et à mesure si nécessaire, ou faire une première passe en comptant le nombre de pour faire direct un malloc de la bonne dimension (cette dernière solution étant en 2 temps, elle nécessite a priori plus de temps de calcul, mais elle optimisera l'utilisation de la mémoire).