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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| #include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
#include <windows.h>
#include "..\lecture\lecture.h"
#define TAILLE 10
#define MAX 1200
void Color(int couleurDuTexte,int couleurDeFond);
void ViderBuffer(void);
main()
{
FILE *pstream;
char* dest, *deja;
char copie[MAX], c;
float km, total;
int encore=1;
total=km=0;
system ("color F1");
Color(0,15);//Couleur par défault
printf("--------------------------------------------------------------\nCalcul des Km ");
Color(4,15);//texte rouge sur fond blanc
printf("(ATTENTION : Respecter les majuscules)\n");
Color(0,15);//Couleur par défault
printf("--------------------------------------------------------------\n\n");
while(encore){
pstream=fopen("km.txt","rt");
if(!pstream)
{
printf("Ouverture de fichier impossible\n");
return 1;
}
dest=(char*)malloc(TAILLE*sizeof(char));
Lire_Chaine("Destination ? (taper 1 pour terminer)", TAILLE, dest);
fgets(copie,MAX,pstream);
//while(fgets(copie,MAX,pstream),!(feof(pstream)||ferror(pstream))); //ERREUR DE FIN DE FICHIER SYSTEMATIQUE
deja=strstr(copie,dest);
//printf("%s",deja); //se positionne sur la premiere lettre de dest
if(!deja)
{
fclose(pstream);
pstream=fopen("km.txt","at");
if (!pstream)
{
printf("Ouverture de fichier impossible\n");
return 1;
}
printf("Nombre de Km (aller simple) ? ");
scanf("%f",&km);
total+=(2*km);
printf("Total partiel des km : %f\n\n",total);
fputs(dest,pstream);
fprintf(pstream,".%f.",km);
if(ferror(pstream)) return 1;
ViderBuffer();
}
else
{
deja=strchr(deja,'.');
deja++;
//printf("%s",deja); //Position où il commence à encoder les chiffre -> km
km=atoi(deja);
//printf("%f",km);
total+=(2*km);
printf("Total partiel des km : %f\n\n",total);
}
fclose(pstream);
if(strstr(dest,"1"))
encore=0;
free(dest);
km=0; // Par sécurité
}
Color(15,0); //texte blanc sur fond noir
printf("\n\nNOMBRE TOTAL DE KM = %f\n",total);
Color(0,15); //Couleur par defaut
system("PAUSE");
getch();
return 0;
}
void Color(int couleurDuTexte,int couleurDeFond)
{
HANDLE H = GetStdHandle(STD_OUTPUT_HANDLE); //include <windows.h>
SetConsoleTextAttribute(H,couleurDeFond*16+couleurDuTexte);
}
void ViderBuffer(void) //Ne fonctionne pas sous Linux
{
#ifdef _WIN32 //vidage buffer car \n en mémoire clavier dû au fprintf
fflush(stdin);
#endif |