problème de récupération de données

problème de récupération de données - C - Programmation

Marsh Posté le 24-04-2006 à 19:57:13    

Salut,
j'ai créé une interface graphique avec Glade et Devcpp, j'ai un bonton ouvrir qui me permet de choisir des fichiers sources, et les fichiers selectionnés sont affichés dans un treeview. Puis a partir du chemin j'ouvre les fichiers avec fopen et j'affecte les données à des tableaux de valeurs avec fscanf.
Le code sera plus explicite.
 
void
on_button_select_file_ok_clicked              (GtkButton       *button,
                                              gpointer         user_data)
{
                 
 GtkWidget *filechooser;
 GtkWidget *treeview;
 GSList *file;
 gint i;
 GtkListStore *store;
 GtkTreeIter iter;
 char chaine[8];
 
 filechooser = (GtkWidget *)lookup_widget(GTK_WIDGET(button),"filechooserdialog" );
 treeview    = (GtkWidget *)lookup_widget(GTK_WIDGET (window_main),"treeview" );
 
 file_list =  gtk_file_chooser_get_filenames  (GTK_FILE_CHOOSER(filechooser));
 
 file =  file_list;
 
 /* create list store */
 
 store = gtk_list_store_new (NFILE_COLUMNS,G_TYPE_INT,G_TYPE_STRING);
 
 nb_of_file = g_slist_length(file_list);
 cur_file_num = 0;
 
 /* add data to the list store */
 for (i = 0; i < nb_of_file; i++)
   {
     gtk_list_store_append (store, &iter);
     gtk_list_store_set (store, &iter,
             FILE_NUM,i+1,                               /* column 0 */
            FILE_NAME,g_slist_nth_data(file_list,i),    /* column 1 */
           -1);
           printf("fichier chemin %s \n",g_slist_nth_data(file_list,i));
   }
 
 gtk_tree_view_set_model(GTK_TREE_VIEW(treeview),GTK_TREE_MODEL(store));
 g_object_unref (G_OBJECT (store));
 gtk_widget_hide( filechooser );
}
 
 
 
void fraction_masse_brulee(GtkWidget *widget)
{
     
    for(f=0;f<nb_of_file;f++)
    {
    fp[f]=fopen(g_slist_nth_data(file_list,f),"rt" );
    }
     
  for(f=0;f<nb_of_file;f++)
{
  for(n=0;n<20001;n++)
   {
   fscanf(fp[f],"%f\t%f\t%f\t%*f\t%*f\t%f\n",&t[f][n],&p[f][n],&TTL[f][n],&x[f][n]);
   }
fclose(fp[f]);
}
 printf("%f\t%f\t%f\t%f\n",t[1][0],&p[1][0],&TTL[1][0],x[1][0]);  
}
 
exemple de fichiers sources :
-100.00 2.000000 0.000000 15.106800 0.054425 21.636970065000
-99.99 2.000000 0.000000 15.112530 0.042970 21.638542905000
-99.98 2.000000 0.000000 15.108365 0.042445 21.636314715000
-99.97 2.000000 0.000000 15.124510 0.039320 21.635397225000
-99.96 2.000000 0.000000 15.122425 0.055990 21.638870580000
-99.95 2.000000 0.000000 15.122945 0.054945 21.634414200000
-99.94 2.000000 0.000000 15.119300 0.059115 21.636314715000
-99.93 2.000000 0.000000 15.120340 0.054425 21.634414200000
 
 
 
donc lorsque je lui demande d'achiffer la premiere ligne de ce fichier par exemple, le programme donne -100.00   0.0000   0.0000  0.0000  
en gros il n'affiche pas les autres valeurs demandées de plus si je remplace  -100.00 dans le fichier à lire par -100.15, le programme affiche toujours -100.00 pourtant tous les tableaux, tableaux de pointeurs et variables sont en float.
Si quelqu'un peut m'aider
Merci
 

Reply

Marsh Posté le 24-04-2006 à 19:57:13   

Reply

Marsh Posté le 25-04-2006 à 19:23:08    

je me suis apercu que si les points étaient remplacés par des virgules les tableaux contenaient les valeurs souhaitées. Je ne comprends pas car le programme fonctionnait correctement sans l'interface. De plus mes fichiers sources contiennent 50000 itérations, il n'est pas possible de remplacer tous les points par des virgules .
Comment faire ?

Reply

Marsh Posté le 25-04-2006 à 20:25:57    

ce n'est pas possible pour toi de passer par une variable intermediaire et de convertir ton string en float, car ce que tu récupère c'est du string, qu'il faut convertir en float :o
passe par un tableau intermediaire plutôt :o

Reply

Marsh Posté le 25-04-2006 à 20:28:02    

Reply

Marsh Posté le 25-04-2006 à 20:56:12    

http://img199.imageshack.us/img199/374/cpournuls5jc.jpg

Reply

Marsh Posté le 26-04-2006 à 09:50:48    

Et donc ca donnerait quoi dans la fonction void fraction_masse_brulee(GtkWidget *widget), car je suis un peu perdu.
MErci de votre aide.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed