int main()
{
clrscr();
int restart,ON;
double Xfact,i,j;
i = 1;
textcolor(LIGHTGRAY);
cout << "Donnez la valeur de X dans X! : \n";
cin >> Xfact;
textcolor(LIGHTGRAY);
cout << "\n\nVoulez-vous ecrire les \202tapes interm\202diaires dans un fichier ?\n\t1- oui\n\t2- non\n";
cin >> ON;
if (ON == 1 )
{
cout << "\n\nQuel sera son nom : \n";
cin >> nom ; // on rentre le nom et ca plante !
save = fopen(nom, "w+");
}
if (Xfact == 0 )
{
textcolor(RED);
cout << "\n\nLa factorielle de 0, not\202e 0!, vaut 1. C'est une convention\n\n\n";
switch (restart)
{
case 1 : main(); break ;
case 2 : return 0; break ;
}
}
else
{
for (j = 2;j<Xfact+1;j++)
{
i *= j;
fprintf(save,"%i", i);
}
}
cs_jpeg
Messages postés40Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention25 février 20041 21 janv. 2002 à 15:30
C'est un peu normal que ça plante ....
En effet, tu utilises ton cin>> avec un pointeur qui pointe sur n'importe quoi.
En fait, il faut faire char nom[64];
Ou bien char* nom=new char[64]; mais dans ce cas faudra faire un delete[] nom; à la fin du prog.
NB : 64 est la taille de la chaine, tu peux prendre plus large si tu penses que 64 caract. ne suffiront pas.