icare
June 1, 2012, 4:20am
1
Bonjour,
Certainement une question qui va faire bondir les pros du C arduino, mais le débutant que je suis ne trouve pas d'explication.
Voici un bout de code qui fonctionne :
void MaFonction(int valeur, char *f_texte)
{
char f_interm[22] = "";
itoa(valeur, f_interm, 10);
strcpy(f_texte, f_interm);
}
Mais celui ci ne fonctionne pas
void MaFonction(int valeur, char *f_texte)
{
itoa(valeur, f_texte, 10);
}
Alors que pour moi, il font la même chose.
Effectivement une erreur de recopie de code : ll fallait lire f_texte et non f_f_texte
void MaFonction(int valeur, char *f_texte)
{
itoa(valeur, f_f_texte, 10);
}
Pour moi les noms sont différents je suppose que c'est une erreur de recopie
Maintenant les 2 codes sont équivalents si dans le second cas f_texte est bien défini dans la fonction appelante comme un tableau de char (avec la bonne taille) et non pas un simple pointeur de char.
icare
June 1, 2012, 12:05pm
3
Bonjour,
J'étais pas très explicite sur le problème rencontré.
Lorsque j'utilise :
void MaFonction(int valeur, char *f_texte)
{
char f_interm[22] = "";
itoa(valeur, f_interm, 10);
strcpy(f_texte, f_interm);
}
Avec MaFonction(1000, maVariable); ----> au retour maVariable = 1000
Lorsque j'utilise :
void MaFonction(int valeur, char *f_texte)
{
itoa(valeur, f_texte, 10);
}
Avec MaFonction(1000, maVariable); ----> au retour maVariable = (rien, vide)
Salut,
Peux-tu nous montrer l'appel de cette fonction ainsi que la déclaration de la variable ?
Bonjour,
icare:
Lorsque j'utilise :
void MaFonction(int valeur, char *f_texte)
{
itoa(valeur, f_texte, 10);
}
Avec **MaFonction(1000, maVariable);** ----> au retour maVariable = (rien, vide)
Il n'y a pas d'erreur dans cette portion de code (testé).
J'en déduis que tu doit avoir un probléme dans le code appelant cette fonction.
-> montre nous ton code "principal" appelant cette fonction
icare
June 1, 2012, 7:32pm
6
Bonsoir,
Finalement ce qui ne fonctionnait pas ce matin fonctionne ce soir !!!
Vous trouverez ci-dessous le code de ce matin :
/*
Programme : Traitement des Strings
création : 27/05/2012 - mise à jour : 01/06/2012
version : 1.0
matériel : Arduino Duemilanove
*/
//*************************************************************************************
//Directives
//*************************************************************************************
#include <Wire.h> //Utilisation de la bibliothèque I2C
#include <LCD03.h> //Utilisation de la bibliothèque LCD03
//*************************************************************************************
//Délarations des variables et constantes
//*************************************************************************************
LCD03 lcd; //Afficheur utilisé LCD03 avec l'adresse par défaut
#define dec 1
#define hex 2
#define bin 3
//*************************************************************************************
//Initialisation
//*************************************************************************************
void setup()
{
char maVariable[22] = "";
int entree = 0;
Serial.begin(9600);
delay(2000);
Serial.println("Bonjour a tous");
Serial.println();
entree = 1000;
IntegerToString(entree, maVariable);
Serial.print("maVariable = ");
Serial.println(maVariable);
strcpy(maVariable,"");
entree = 5000;
IntegerToString1(entree, maVariable);
Serial.print("maVariable1 = ");
Serial.println(maVariable);
}
//*************************************************************************************
//Boucle sans fin
//*************************************************************************************
void loop() {
//Ne fait pas grand chose, mais je tourne en rond et je le fais bien
}
//*************************************************************************************
//Fonctions
//*************************************************************************************
//
//Fontion conversion d'un integer en string
//
//void IntegerToString(int valeur, byte base, boolean signe, boolean separateur, char *f_texte)
void IntegerToString(int valeur, char *f_texte)
{
char f_interm[22] = "";
itoa(valeur, f_interm, 10);
strcpy(f_texte, f_interm);
}
void IntegerToString1(int valeur, char *f_texte)
{
itoa(valeur, f_texte, 10);
}
Le plus inquiétant dans cette histoire et de ne pas comprendre pourquoi ! ]
Résultat de ce soir :
[quote author=Résultat du soir]Bonjour a tous
maVariable = 1000
maVariable1 = 5000[/quote]
Résultat de ce matin :
[quote author=Résultat du matin]Bonjour a tous
maVariable = 1000
maVariable1 = [/quote]
system
June 2, 2012, 10:28am
7
Une fois supprimées les 3 lignes qui ne servent a rien et qui empêchent de compiler chez moi (Wire et LCD03) ton code fait exactement ce qu'il est sensé faire
Bonjour a tous
maVariable = 1000
maVariable1 = 5000