Il n'y a pas de problème si la définition du format texte est claire.Citation:
Envoyé par miron
Version imprimable
Il n'y a pas de problème si la définition du format texte est claire.Citation:
Envoyé par miron
En fait je desire mettre des float ou des int le cas echéant.Citation:
Envoyé par Emmanuel Delahaye
donc pour recuperer un flaot ou un int , on ne sais sa taille...
Je doit faire une erreur.
C'est j'uste pour information, car modifier a cette heure mon programme a rendre pour demain, serais sucidaire...
Des float ou des int, c'est pas très sérieux comme spécification. Alors clarifie. Quels sont les besoins ? Comment on différencie les données ? Comment sont-elle séparés ?Citation:
Envoyé par miron
ce sont a la base des float que je voudrais sauvegarder dans un txt pour pouvoir les recharger lorsque l'utilisateur relance le prog...Citation:
Envoyé par Emmanuel Delahaye
Pour l'instant je me suis debrouillé comme ca(a tout hasard je lance le code)
Ca c'est l'enregistrement et voici la lectureCode:
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 void Fermeture(int*ecran,int*coef,int*ceinture,int*Marche_arr,float*autonomie,float*vitesse,float*carbu,float*kmt,float*kmj,float*conso_inst,float*conso_moy,float*vitesse_moy,float*carbu_max,char*voiture_bit,char*voiture_lock,char*Config,char*Nom_voiture,char voiture_aff[][11],int dim1, int dim2) { FILE *P_FICHIER; /* pointeur sur FILE */ char NOM_FICHIER[]="C:\\Vivo\\Vivo.txt"; int i,c; int kmt_int=*kmt,kmj_int=*kmj*10,vitesse_moy_int=*vitesse_moy*10,carbu_int=*carbu*10,conso_moy_int=*conso_moy*10; for(i=0;i<50;i++) //Sauvegarde des donnée Config[21]=(kmt_int/100000)%10+97; Config[22]=(kmt_int/10000)%10+97; Config[23]=(kmt_int/1000)%10+97; Config[24]=(kmt_int/100)%10+97; Config[25]=(kmt_int/10)%10+97; Config[26]=(kmt_int)%10+97; Config[27]=(kmj_int/100000)%10+97; Config[28]=(kmj_int/10000)%10+97; Config[29]=(kmj_int/1000)%10+97; Config[30]=(kmj_int/100)%10+97; Config[31]=(kmj_int/10)%10+97; Config[32]=(kmj_int)%10+97; Config[33]=(vitesse_moy_int/1000)%10+97; Config[34]=(vitesse_moy_int/100)%10+97; Config[35]=(vitesse_moy_int/10)%10+97; Config[36]=(vitesse_moy_int)%10+97; Config[37]=(carbu_int/100)%10+97; Config[38]=(carbu_int/10)%10+97; Config[39]=(carbu_int)%10+97; Config[40]=(conso_moy_int/100)%10+97; Config[41]=(conso_moy_int/10)%10+97; Config[42]=(conso_moy_int)%10+97; do { P_FICHIER = fopen(NOM_FICHIER, "w"); if (!P_FICHIER) printf("\nERREUR: Impossible d'ouvrir le fichier.\n"); Sleep(3000); } while (!P_FICHIER); for (i=0;i<50;i++) { c=Config[i]; fputc( c , P_FICHIER ); } fclose(P_FICHIER); }
Voila donc c'est un peu long.Code:
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 void demarage(int*ecran,int*coef,int*ceinture,int*Marche_arr,float*autonomie,float*vitesse,float*carbu,float*kmt,float*kmj,float*conso_inst,float*conso_moy,float*vitesse_moy,float*carbu_max,char*voiture_bit,char*voiture_lock,char*Config,char*Nom_voiture,char voiture_aff[][11],int dim1, int dim2) { FILE *P_FICHIER; /* pointeur sur FILE */ char NOM_FICHIER[]="C:\\Vivo\\Vivo.txt"; int i,j; printf("\n\n\n\tChargement en cour, Veuillez patienter...\n\n"); do { P_FICHIER = fopen(NOM_FICHIER, "r"); if (!P_FICHIER) printf("\nERREUR: Impossible d'ouvrir le fichier.\n"); Sleep(3000); } while (!P_FICHIER); for(i=0;i<=100;i++) { printf(" %3d %% effectues ",i); if (i<50) Config[i]=fgetc( P_FICHIER ); if (i<20) Nom_voiture[i]=Config[i]; for(j=0;j<i;j=j+2) printf("|"); printf("\r"); for(j=0;j<400;j++) printf(" %3d %% effectues \r",i); } fclose(P_FICHIER); *kmt= (Config[21]-97)*100000 + (Config[22]-97)*10000 + (Config[23]-97)*1000 + (Config[24]-97)*100 + (Config[25]-97)*10 + (Config[26]-97); *kmj=((Config[27]-97)*100000 + (Config[28]-97)*10000 + (Config[29]-97)*1000 + (Config[30]-97)*100 + (Config[31]-97)*10 + (Config[32]-97)); *kmj/=10; *vitesse_moy= ((Config[33]-97)*1000 + (Config[34]-97)*100 + (Config[35]-97)*10 + (Config[36]-97)); *vitesse_moy/=10; *carbu= ((Config[37]-97)*100 + (Config[38]-97)*10 + (Config[39]-97)); *carbu/=10; *conso_moy= ((Config[40]-97)*100 + (Config[41]-97)*10 + (Config[42]-97)); *conso_moy/=10; *carbu_max= (Config[43]-97)*10 + (Config[44]-97); }
Je pensait que avec fgetc() ce serai plus rapide mais j'ai vite dechanté...
C'est pas à moi de déviner la spec en lisant ton code. C'est pas du boulot, ça.Citation:
Envoyé par miron
Tu définis les besoins. Après, on verra.
fgetc(), c'est du bas niveau, c'est pas fait pour ça...Citation:
Je pensait que avec fgetc() ce serai plus rapide mais j'ai vite dechanté...
Donc ce que j'ai fait ya pas mieu...Citation:
Envoyé par Emmanuel Delahaye
Enfin je veux dire comme fontion?
mes besoin?
Une fonction pas trop compliquée qui lise et ecrive dans un fichier et que cette fonction puisse prendre des float directement et les mettres dans le fichier et les recharger ensuite dans le meme format.:?
Ben fprintf() pour ecrire (avec le specificateur de format qui convient aux donnees a ecrire) et fscanf() pour lire (avec le specificateur de format qui convient aux donnees a lire).Citation:
Envoyé par miron
Si tu n'as pas confiance en le fichier a lire (i.e. si ce n'est pas ton programme qui l'a cree), alors fgets() pour lire une ligne et strtol() ou strtod() pour convertir en entier ou double, respectivement.
MerciCitation:
Envoyé par DaZumba
Non. Tu confonds spécification et conception. Mais qu'est-ce qu'on vous apprend à l'école ? Rien ?Citation:
Envoyé par miron
Ce que je veux savoir c'est quelles sont les données à sauvegarder, qu'on puisse enfin définir une interface claire.
En info... Tout le monde dans la classe n'aime pas l'info, ya que moi, il disent tous qu'il est imposible de comprendr ele prof...Citation:
Envoyé par Emmanuel Delahaye
Il est vrai qu'il est ch \a mais bon sans les cour que j'ai eu je ne pourais m'amuser comme je le fait!!!
Enfin la on aprend rien c'est surement vrai...
Je veus mettre des float dans un fichier texte (a partir du prog) creer par moi et les recupérais lors dun lancement futur du prog...
Si tu a choisis un format texte :Citation:
Envoyé par miron
Mais les détails dépendent de la spécification du format du fichier que tu refuses de spécifier malgré mon insistance.
- pour écrire : fprintf() avec "%f"
- pour lire : fgets() puis strtod()
Mais à force de demander, on va peut être l'obtenir...