Bonjour tout le monde,

Depuis quelques heures je suis confront� � un probl�me de "segmentation fault" lors d'un appel de sprintf dans une des m�thode de mon objet.

Voici mon code
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
void FortranFile::write(double * d,long size)
{
	unsigned short i = (sizeof(double)*size)%(0xFFFF+1);
	unsigned short e = (sizeof(double)*size)/(0xFFFF);
	char * str;
	if ( !fileIsOpened() ) open();
/*....*/
	else if ( format == FortranFileFormat::TEXT )
	{
		for ( long i = 0 ; i < size ; i++ )
		{
                        /*Le probleme intervient ici */
			sprintf(str,"%f",*(d+i));
			cout << str << endl;
		}
	}
 
}
et j'ai les deux m�thodes suivantes qui appellent ce code :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
void FortranFile::write(double * d)
{
	write(d,(long)1);
 
}
void FortranFile::write(double d)
{
	write(&d,(long)1);
}
Et voici l'appel effectu� avec le programme principal utilis� pour tester ma classe :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
 
int main(char * argv[],int argc)
{
	double d = 5.0;
	FortranFile f("nom de fichier","w",FortranFileFormat::TEXT);	
	f.write(d);
	f.close();	
}
le programme affiche bien 5.0000 qu'on effectue f.write(d) ou f.write(&d) alors que quand j'utilise un code du meme genre que ci-dessous il fonctionne parfaitement.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
 
int main(char * argv[],int argc)
{
	double  d[] = {5.0,6.0};
	FortranFile f("nom de fichier","w",FortranFileFormat::TEXT);	
	f.write(d,2);
	f.close();	
}
J'ai beau chercher je ne comprend absolument pas o� est le probl�me dans ce code... si quelqu'un a une id�e je suis vraiment preneur.

Un grand merci d'avance � tout ceux qui jetterons un coup d'oeil par ici.