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");
}
} |