Go Down

Topic: conversion de int en char* (Read 1 time) previous topic - next topic

harima2

Bonjour à tous,

voilà j'utilise une carte micro SD, en utilisant la librairie SDUfat http://www.blushingboy.net/p/SDuFAT/downloads/2/
j'arrive à y écrire des phrases, mais pas des chiffres.

J'ai beau essayer toutes sortes de conversions avec char, byte... j'ai toujours le message d'erreur :
println(const char[9], int) is ambiguous

donc finalement comment peut on vertir par exemple le nombre 100 en string ?

...une idée ...? :-[

cscm

Salut,

Tu as deux choix, soit tu utilise la fonction sprintf ou bien tu ecrit une fonction de conversion.

Voici l'exemple avec sprintf :

Code: [Select]

#include <stdio.h>

void setup()                    
{
Serial.begin(9600);
}

void loop()                    
{
 char *str;
 sprintf(str, "%d", 42);
 Serial.print(str);
 delay(2000);
}


Voici une autre exemple avec une conversion :
Code: [Select]

void setup()                  
{
Serial.begin(9600);
}

void   loop()
{
 int d;
 int nb = 42;

 d = 1;

 while(nb / d >= 10)
   d *= 10;

 while(d)
   {
     Serial.print(nb / d);
     nb %= d;
     d /= 10;
   }
 delay(2000);
}


Mes 0.02$

harima2

...et bien , impeccable, çà compile :)

en fait justement, quelle différence entre char *str; et char str;   ?

harima2

humm... :(  j'ai parlé trop vite...
çà compile, oui..
avec serial.print affichage ok
mais avec SD.print (pour écrire dans la carte SD), rien n'est écrit ...

curieux ...?   ::)

Vincent

Le char *str sert à déclarer une chaîne de caractére et le char str un caractère.

fdufnews

#5
Apr 08, 2009, 10:31 am Last Edit: Apr 08, 2009, 10:33 am by fdufnews Reason: 1
char *str est un pointeur nommé str qui pointe sur une variable de type char. La variable en question peut être soit un élément unique soit un tableau. (ATTENTION il n'y a pas création de la variable char mais seulement du pointeur)

char str une variable de type char nommée str

harima2

#6
Apr 08, 2009, 02:20 pm Last Edit: Apr 08, 2009, 02:36 pm by harima2 Reason: 1
C'est ce que j'étais en train de comprendre...

donc lorsque j'écris
char *str;
char sprintf(str, "%d", 42);
SD.println("nom_fichier.txt", str);

     
str est encore vide...?

Comment convertir la valeur en string pour l'incorporer directement dans cette ligne ..?


(je vais essayer avec itoa, mais ce soir,  je n'ai pas la carte sous la main)

fdufnews

Non, sprintf créé un tableau de char et str pointe sur le début du tableau. Il ne faut pas écrire:
Quote
char sprintf(str, "%d", 42);

il ne faut pas le char devant.

harima2

.... :(
..........mais curieusement la ligne :
sprintf(str, "%d", 42);
empèche la ligne :
SD.println("nom_fichier.txt", str); de fonctionner
     

Go Up