Le Mon, 17 Nov 2008 21:54:16 +0000 (GMT),
Patrick Dupre <pd520@???> a écrit :
> Merci,
>
> Mais je comprends rien,
> C'est exact, le segmentation fault est du a:
> for (i = 0 ; i < nb_pt ; i++) fprintf (file_out,"%11.5f %g\n", x [i],
> y [i]) ;
> qui est a la fin du programme.
> Si je fait :
> for (i = 0 ; i < nb_pt ; i++) fprintf (file_out,"%11.5f %g\n", x
> [i]) ;
>
> Ca marche,
>
> de meme ceci marche:
>
> #define MAXDBL 4194304
> double x[MAXDBL], y [MAXDBL] ;
> int main () {
> unsigned long int i;
> unsigned long int nb_pt = MAXDBL ;
> FILE *file_out ;
> file_out = fopen ("tmp.txt", "w") ;
> for(i = 0 ; i < MAXDBL ; i++)
> {
> x [i] = 1.0 ;
> };
> for (i = 0 ; i < nb_pt ; i++) fprintf (file_out, "%11.5f %g\n",
> x [i], y [i]) ;
> return 0;
> };
>
> Ou est l'erreur ?
Euh, chez moi, unsigned long int est sur 4 octets, comme un unsigned
int. Il y a déjà une erreur à ce niveau là nan ? 2^(4*8) << MAXDBL
L'erreur te vient peut être simplement d'ici: unsigned long int nb_pt =
MAXDBL ; mais n'apparaît que lorsque tu utilises nb_pt non ?
Comme tu n'utilise pas nb_pt dans le second programme, il te le vire à
la compilation, donc ut n'as pas l'erreur
Fred