bonjour ,

voilà mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
int main()
{
 
  int const toto= get_setting_key("test.ini" , "option1" , "toto");
  printf ("\n\n\n\nplafond est : %s ",toto );
  int const tata = get_setting_key("test.ini" , "option2" , "tata");
  printf ("\nmaxCons est : %s ",tata);
 
  printf ("\n.......... apres tout traitement  ");
  printf ("\n\n\n\nplafond est : %s ",toto);
  printf ("\nmaxCons est : %s ",tata);
  }
 
 
int get_setting_key (const char *filename,
                     const char *key,
                     const char *sub_key)
{
 
   char s_line[256];
   int key_exist = 0;
 
   FILE *p_file = NULL;
 
   /* On test la validite des arguments */
   if (filename != NULL && key != NULL && sub_key != NULL)
   {
           /* Ouverture du fichier de configuration */
      p_file = fopen (filename, "r");
 
      if (p_file == NULL)
      {
         fprintf (stderr, "Erreur: "
                          "Impossible d'ouvrir le fichier specifie !\n");
 
	return 0 ;
      }
 
      while (fgets (s_line, sizeof (s_line), p_file))
      {
         char *p_adr = NULL;
         /* Recherche de la section */
         if (key_exist == 0 && s_line[0] == '[')
         {
            p_adr = strtok (s_line, "[]");
            printf(" \n la clé est : %s \n",p_adr);    
            if (p_adr != NULL)
            {
               if (strcmp (p_adr, key) == 0)
               {
                  printf(" \n ---- la cle existe ds if  %s",p_adr); 
		  key_exist = 1;
 
               }
            }
         }
         else if (key_exist == 1)
         {
            p_adr = strtok (s_line, "=");
            if (p_adr != NULL)
            {  
               if (strcmp (p_adr, sub_key) == 0)
               {
	          printf("\n ... subkey existe ...  \n"); 
 
                  /* On recupere l'enregistrement de la cle */
                  p_adr = strtok (NULL, "=");
                  printf(" ---- valeur tag  %s \n", p_adr);  
		  return (int)p_adr ;
 
               }
            }
         }
      }
   }
   else
   {
      fprintf (stderr, "Erreur: "
                       "Arguments manquants !\n");
   }
 
 
   /* Fermeture du fichier */
   fclose (p_file);
 
 
   return 0;
}
voilà le fichier test.ini
[option2]
toto= 50

[option2]
tata= 25
et bien ma variable toto est mal affichée à la fin du traitement , je ne comprends pas pourkoi ? (elle s'affiche = m alors qu'au debut elle s'affiche bien 50 )