J'ai lu la définition de la fonction puts(), mais j'ai du mal à comprendre exactement ce qu'elle fait
// Convert Int to char
char posiC[2] = {0}; // es-ce que le {0} est indispensable
sprintf(posiC, "%d", posi);
puts(posiC);
ou alors mon anglais n'est pas assez bon
Writes the C string pointed by str to the standard output (stdout) and appends a newline character ('\n').
The function begins copying from the address specified (str) until it reaches the terminating null character ('\0'). This terminating null-character is not copied to the stream.
Notice that puts not only differs from fputs in that it uses stdout as destination, but it also appends a newline character at the end automatically (which fputs does not).
Que va vraiement changer posiC avant et après.
Si je ne me trompe pas,, avant il est bien terminé pas \0 parce que sprintf(), non?
Sur Arduino, cette fonction ne peut rien faire. Je suis même surpris que ca compile.
L'arduino n'implementant le systéme de fichier standard, pas de stdout, stdin ni puts ni printf.
Sinon en C standard, puts envoie la chaine de caractères sur stdout suivit d'un retour à la ligne.
Une chaine de caractères étant définie en C comme un tableau de char terminé par le caractère nul.
Relire "le langage C" par Kernigan et Ritchie.
Les fonctions de <stdio.h> ne sont valables que dans deux cas :
tu as des flux (STREAM / FILE*) disponibles (sur PC par exemple avec la console)
tu as toi même créer des flux remplaçant ceux de base (stdin, stdout, stderr).
Sur Arduino et plus généralement sur AVR les flux consoles de base ne sont pas du tout implémenté.
Les fonctions compilent car le code est là, mais à l’exécution tu ne fait que sortir du texte sur un flux inexistant.
J'ai jamais testé mais tu doit même avoir un reset de ta carte vu que tu tapes dans un pointeur nulle.
Toujours en AVR un truc classique est de créer des flux remplaçant ceux de bases (stdin, stdout) et sortant sur le port série ou sur un écran, voir même sur un système de fichier.
Sur Arduino ça ne se fait pas comme ça, va savoir pourquoi.
Si ça t’intéresse voila la doc compléte : http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html