conversion de int en char*

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 ...? :-[

Salut,

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

Voici l'exemple avec sprintf :

#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 :

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$

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

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

humm... :frowning: 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 ...? ::slight_smile:

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

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

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)

Non, sprintf créé un tableau de char et str pointe sur le début du tableau. Il ne faut pas écrire:

char sprintf(str, "%d", 42);

il ne faut pas le char devant.

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