Bonjour, j'ai un petit souci avec mon feof (enfin, je pense que le pb vient de là).
J'ai fait une fonction qui ouvre un fichier, qui lit certaines valeurs, qui calcule une autre valeur et qui écrit ce résultat dans un autre fichier.
Donc à chaque ligne de mon fichier que je lis, correspond une valeur calculée qui doit donc être écrit dans un nouveau fichier.

Mon idée : je parcours toutes les lignes, je calcule et je m'arrête à la dernière ligne.

Mon pb : la valeur de la dernière ligne vaut 0

Dans la fonction ci-dessous, name_file est un fichier a ne+2 colonnes
1e colonne : le temps, dernière colonne : la température, les autres : les fractions masiques de chaque espèce

voici ma fonction :

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
void CalculPression(char * name_file,char * name_file_out,Engine * e,Species ** TabSpecies,double m,double R,unsigned int ne)
{
    /* cette routine calcule la pression (en Pa) du systeme a l'instant t.
       
       name_file est un fichier qui contient les sorties a chaque instant.
       Chaque ligne de name_file est constitue du temps t, des fractions
       massiques de chaque espece et de la temperature
 
       name_file_out est le fichier de sortie dans lequel sera ecrite la pression
 
       e contient les caracteristiques du moteur
 
       TabSpecies contient toutes les donnees de chaque espece
 
       m est la masse du melange en g
       R est la constante des gaz parfaits en erg/(mol K)
 
       ne est le nombres d'especes du systeme
     */
 
    /* ouverture du fichier d'ecriture de la pression */
    FILE * fileOutput = fopen(name_file_out, "w+");
 
    /* ouverture du fichier de sorties */
    FILE * file=fopen(name_file,"r");
    if (file==NULL)
    {
	fprintf(stderr,"Error in file %s line %d in function %s : file %s wasn't found\nExit program\n",__FILE__,__LINE__,__FUNCTION__,name_file);
	exit(1);
    }
 
    char line[550];
 
    while( (!feof(file)) & (fgets (line, sizeof line, file) != NULL) )
    {
 
	char *p = strchr(line, '\n');
 
	if(p==NULL)
	{
	    fprintf(stderr,"Error in file %s line %d in function %s : tabular line is too short. Increase size of tabular line.\nExit program\n",__FILE__,__LINE__,__FUNCTION__);
	    exit(1);
	}
 
	if (p != NULL)
	    *p = 0;
 
	unsigned int i;
	double volume,dvolume_dt,y,t,T;
	fscanf(file,"%lf",&t); /* on recupere le temps */
	V_Vp(t,e,&volume,&dvolume_dt);
 
	/* calcul de la masse molaire du melange M en g/mol */
	double M=0.0;
	for(i=0;i<ne;++i)
	{
	    /* on recupere la fraction massique de l'espece */
	    fscanf(file,"%lf",&y);
 
	    M+=y/TabSpecies[i]->M;
	}
 
	M=1.0/M;
 
	fscanf(file,"%lf",&T); /* on recupere la temperature */
 
	/* calcul de la pression en Pa (d'ou le coefficient 0.1) */
	const double pression=m/volume*R/M*T*0.1;
 
	/* on ecrit dans le fichier name_file_out la pression */
	fprintf(fileOutput,"%g\n",pression);
 
    } /* fin du while */
 
    if (ferror(file)) /* an error occurred */
	fprintf(stderr,"Error in file %s line %d function %s : a misreading occurred\nExit program\n",__FILE__,__LINE__,__FUNCTION__);
 
    /* on ferme les fichiers */
    fclose(fileOutput);
    fclose(file);
 
    //free(line);
 
    return;
}
je pense que l'erreur doit provenir de la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
while( (!feof(file)) & (fgets (line, sizeof line, file) != NULL) )

Merci beaucoup.