Fprintf de factorielles !

Signaler
Messages postés
368
Date d'inscription
mercredi 14 novembre 2001
Statut
Membre
Dernière intervention
1 septembre 2008
-
Messages postés
40
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
25 février 2004
-
voila, je comprend pas pourquoi le prog me met une erreur lors de l'execution alors que le compilateur et le linker n'ont rien vu d'anormal !

#include "iostream.h"
#include "stdlib.h"
#include "conio.c"
#include "fstream.h"

FILE *save;
char *nom;

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);
}
}

textcolor(LIGHTBLUE);
cout <<"\n\nLa factorielle de ";
textcolor(RED);
cout << Xfact ;
textcolor(LIGHTBLUE);
cout << " vaut " ;
textcolor(RED);
cout << i ;
cout << "\n\n\n";

textcolor(BROWN);
cout << "Recommencer ?\n\t1- oui\n\t2- non\n\n\n";
cin >> restart;

switch (restart)
{
case 1 : main(); break ;
case 2 : return 0; break ;
}
}

1 réponse

Messages postés
40
Date d'inscription
lundi 17 décembre 2001
Statut
Membre
Dernière intervention
25 février 2004
1
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.