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