| 12
 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