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 104 105 106 107 108 109 110
| /*****************************************************************
File: lecture.c
Author: Johann
Brief: Source du bloc lecture des champs
*******************************************************************/
#include <stdio.h>
#include <stdlib.h>
/* #include "lecture.h"
! --------------------------------------------------------------
*/
typedef struct valeur {
float ACR;
float DCR;
float ACIR;
float DCIR;
}VALEUR;
VALEUR lecture (VALEUR nonFiltre){
int reception[21];
char usb;
int i,illicite,compt;
int ACR_i,ACIR_i,DCR_i,DCIR_i;
FILE * entree;
nonFiltre.ACR = 0;
nonFiltre.ACIR = 0;
nonFiltre.DCR = 0;
nonFiltre.DCIR = 0;
ACR_i=0;
ACIR_i=0;
DCR_i=0;
DCIR_i=0;
illicite=0;
compt=0;
printf("entree\n");
entree = fopen("record1.dat", "r"); /* on dit au pointeur de lire dans le fichier record1.dat*/
printf("%d\n", entree);
int transf;
printf("zero\n");
do
{
fscanf(entree, "%c", &usb); /* on prend l'octet*/
transf = (int)usb-48; /* char=>int*/
printf("un\n");
if (transf != -35 && compt!=20){ /* si on a pas BS*/
reception[i] = transf; /* on place le chiffre, numéro correspond à un caractère dans le tableau*/
printf("reception[%d] = %d\n", i, reception[i]);
compt++; /* on incrémente pour ne pas réécrire dans la même case*/
i++;
printf("deux\n");
}
else if (compt <=19) { /* le cas où un BS s'introduit avant son heure et donc qu'un problème s'est produit*/
for(i=0; i<= 20; i++){ /* réinitialisation du tableau*/
reception[i]=0;
compt=20; /* le programme réenvoi les anciennes valeurs qui ne devraient pas être très éloigné de la réalité */
printf("trois\n");
}
}
else{
for(i=0; i<=20; i++){
printf("%d\n",reception[i]);
if(((reception[i]<= -1) && (reception[i]>=10)) || (reception[i]!=-35) || (reception[i]!=-4) || (reception[i]!=-38)) { /*vérification d'un caractère illicite*/
illicite=1;}
printf("quatre\n");
}
if (illicite ==1) {
printf("cinq\n");
for(i=0; i<= 20; i++){ /* réinitialisation du tableau*/
reception[i]=0;}
}
else { /* si tous les chiffres ont été validé, on extrait les valeurs*/
printf("six\n");
ACR_i= 1000*reception[0]+100*reception[1]+10*reception[2]+reception[3];
DCR_i= 1000*reception[5]+100*reception[6]+10*reception[7]+reception[8];
ACIR_i= 1000*reception[10]+100*reception[11]+10*reception[12]+reception[13];
DCIR_i= 1000*reception[15]+100*reception[16]+10*reception[17]+reception[18];
}
compt++; /* on sort de la boucle*/
} /* on sort des if*/
}while(compt<=20);
nonFiltre.ACR = (float)ACR_i; /* conversion en float*/
nonFiltre.ACIR = (float)ACIR_i;
nonFiltre.DCR = (float)DCR_i;
nonFiltre.DCIR = (float)DCIR_i;
return nonFiltre;
}
int main() {
VALEUR nonFiltre;
nonFiltre = lecture (nonFiltre);
printf ("%f %f %f %f", nonFiltre.ACR, nonFiltre.DCR, nonFiltre.ACIR, nonFiltre.DCIR);
return 0;
} |
Partager