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
| //---Déclarations et initialisations des données---//
char *LigneLue; // Contient la ligne lue du fichier texte
char *DebutSMS; // Contient l'en tête du SMS
char *pointeur; // Contient la chaîne de caractère extraite entre chaque TAB
char TypeBoitier; // Contient la lettre qui détermine le type de boitier
char *NumModem;
unsigned int VM_CptIn[96]; // Tableau contenant les DonnéesIn
unsigned int VM_CptOut[96]; // Tableau contenant les DonnéesOut
unsigned int nb_mot = 1; // Contient le nombre de chaîne de caractère extraite de la ligne lue
unsigned int i = 0;
unsigned int NbLigne = 1; // Permet de connaître le nombre de ligne du fichier donc l'heure de la fin
DebutSMS = (char*)malloc(sizeof(char)); // allocation de la mémoire pour la variable DébutSMS
// LigneLue = (char*)malloc(sizeof(char));
//---initialisations des tableaux---//
for(i=0;i<96;i++)
{
VM_CptIn[i] = 0;
VM_CptOut[i] = 0;
}
i = 0;
// Lecture des deux premières lignes afin de déterminer le type du compteur, P,Q,T,U
TypeBoitier = DetermineTypeBoitier();
//---Ouverture du fichier de données---//
FILE *fp = NULL;
fp = fopen("CompteurP.txt","r");
//------------------------------------------------------------------------------------//
// LECTURE DU FICHIER, MISE EN FORME DE L'EN TETE ET REMPLISSAGE DU TABLEAU //
//------------------------------------------------------------------------------------//
while (fgets(LigneLue,100,fp) != NULL)
{
printf("Ligne : %s",LigneLue);
//--- On extrait la chaîne de caractère qui précède le caractère 0x09(Tabulation)---//
pointeur = strtok( LigneLue, "\x09" );
printf("s1 : %s\n",pointeur);
if(NbLigne == 1)
{
//---Mise en forme de l'en tête du SMS---//
switch (TypeBoitier)
{
case 'P' : strcat(DebutSMS,"P");
break;
case 'T' : strcat(DebutSMS,"T");
break;
case 'Q' : strcat(DebutSMS,"Q");
break;
case 'U' : strcat(DebutSMS,"U");
break;
}
strcat(DebutSMS,pointeur);
NumModem = pointeur;
//--- selon le type de boitier, on met en forme le début du SMS ---//
if ((TypeBoitier == 'P') || (TypeBoitier == 'Q'))
{
strcat(DebutSMS,"/012/0189/02/C");
}
else
{
strcat(DebutSMS,"/012/0189/02/I");
}
}
printf("Ligne : %s",LigneLue);
// tant que l'on a pas lu tout le fichier...
while( pointeur != NULL )
{
// Cherche les autres caractères TAB '0x09' dans la ligne lue
pointeur = strtok( NULL, "\x09" );
// On a trouvé un caractère TAB
if ( pointeur != NULL )
{
nb_mot++;
printf("s2 : %s\n",pointeur);
// Dans un compteur Pilot, on a 3 mots, NumModem,Date,DonnéeCumul
// si DonnéeCumul
if ((nb_mot == 3) && ((TypeBoitier == 'P') || (TypeBoitier == 'Q')))
{
VM_CptIn[i] = atoi(pointeur);
i++;
}
// Dans un compteur Twin, on a 5 mots, NumModem, Date, DonnéeCumul, DonnéeIn, DonnéeOut
// si DonnéeIn
if (nb_mot == 4)
{
VM_CptIn[i] = atoi(pointeur);
}
// si DonnéeOut
if (nb_mot == 5)
{
VM_CptOut[i] = atoi(pointeur);
i++;
}
}
}
nb_mot = 1;
NbLigne++;
} |
Partager