[Résolu] Problème compréhension code

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.
:grin:

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.

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

Bonsoir,
Finalement ce qui ne fonctionnait pas ce matin fonctionne ce soir !!! :grin:

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 ! ]:slight_smile:

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]

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