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
   |  static void modifier_fichier(char *str)
{
    int index;
    int i = 0;
 
    //variable qui sert de tampon pour le transfert des lignes
    char str_cmp[MAX_SIZE];
    json_object *jobject_cmp;
    json_object *jarray_donnee_cmp;
    json_object *jarray_temps_cmp;
    char str_double[16];
    //Variable qui va stocker str sous forme de json
    json_object *jobject;
 
    //Variables qui vont stocker les valeurs des champs du json
    char *machine_val, *capteur_val, *date;
    float donnee;
 
     //On rentre la string du buffer dans un json object
    jobject = json_tokener_parse(str);
 
    machine_val = json_object_get_string(json_object_object_get(jobject, "Machine"));
    capteur_val = json_object_get_string(json_object_object_get(jobject, "Capteur"));
    date = json_object_get_string(json_object_array_get_idx(json_object_object_get(jobject, "Temps"),0));
    sscanf(json_object_get_string(json_object_array_get_idx(json_object_object_get(jobject, "Donnee"), 0)), "%f", &donnee);
    printf("donnée : %f \n",donnee);
    index = find_str_file(capteur_val, machine_val);
 
    //On créer les fichiers sources et cible pour faire la modification
    FILE* fichier_source = NULL;
    FILE* fichier_cible = NULL;
 
    fichier_source = fopen("donnée.txt", "r");
    printf("test6 \n");
 
    if(fichier_source != NULL)
    {
        fichier_cible = fopen("donnée.tmp", "a");
 
        if(fichier_cible != NULL)
        {
            while(fgets(str_cmp, MAX_SIZE, fichier_source) != NULL)
            {
                printf("test8 \n");
                //effectue la modification de l'array a l'index qui correspond aux capteurs/machine
                if(i == index)
                {
                    printf("test9 \n");
                    jobject_cmp = json_tokener_parse(str_cmp);
                    printf(" 1 : %s \n",json_object_to_json_string(jobject_cmp));
 
                    //On mémorise les arrays Temps et Donnee
                    jarray_donnee_cmp = json_object_object_get(jobject_cmp, "Donnee");
                    jarray_temps_cmp = json_object_object_get(jobject_cmp, "Temps");
                    printf("test10 \n");
                    //printf(" 1.1 : %s \n",json_object_to_json_string(jarray_temps_cmp));
 
                    //On supprime les arrays Temps et Donnee
                    json_object_object_del(jobject_cmp, "Donnee");
                    json_object_object_del(jobject_cmp, "Temps");
                    //printf(" 2 : %s \n",json_object_to_json_string(jobject_cmp));
                    printf("test11 \n");
 
                    json_object_array_add(jarray_temps_cmp,json_object_new_string(date));
                    sprintf(str_double,"%f",donnee);
                    //printf(" 2.0 : %s \n",str_double);
                    //printf(" 2.00 : %f \n",donnee);
                    //printf("2.000 : %f \n", json_object_new_double(donnee));
                    json_object_array_add(jarray_donnee_cmp,json_object_new_string(str_double));
 
                    printf("test12 \n");
                    printf(" 2.1 : %s \n",json_object_to_json_string(jarray_donnee_cmp)); // <-- le problème est la
                    printf(" 2.2 : %s \n",json_object_to_json_string(jarray_temps_cmp));
 
                    json_object_object_add(jobject_cmp,"Donnee",jarray_donnee_cmp);
                    json_object_object_add(jobject_cmp,"Temps",jarray_temps_cmp);
                    printf("test13 \n");
                    //les modifications viennent d'être effectué sur le json
 
                    //write_file_json(fichier_cible,jobject_cmp);
                    printf("test14 \n");
                }
                else
                {
                    write_file(fichier_cible, str_cmp);
                }
                i++;
            }
            fclose(fichier_cible);
            fclose(fichier_source);
 
            //on supprimer le fichier .txt et on renome le fichier .tmp en .txt
            remove("donnée.txt");
            rename("donnée.tmp","donnée.txt");
        }
        else
        {
            printf("impossible d'ouvrir le fichier donnée.tmp");
            fclose(fichier_source);
        }
    }
    else
    {
        printf("impossible d'ouvrir le fichier donnée.txt");
    }
} | 
Partager