bah pour le signe c'est très simple..

Au lieu de mettre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
          /* On vient de finir un chiffre */
          if ( start >= 0 )
            {
               ch1[end] = '\0' ;
               sscanf ( ch1, "%f",  &((*t)[(*pos)]) );
               (*pos)++;
            }
Il suffit de mettre :

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
 
          /* On vient de finir un chiffre */
          if ( start >= 0 )
            {
               ch1[end] = '\0' ;
               if ( (start > 0) && (ch[start-1] == '-' ) )
                 {
                    sscanf ( ch1, "%f",  &((*t)[(*pos)-1]) );
                    (*t)[(*pos)-1]) = - (*t)[(*pos)-1] ;
                 }
               else
                 {
                    sscanf ( ch1, "%f",  &((*t)[(*pos)]) );
                    (*pos)++;
                 }
            }
Ce qui signifie :

au moment de stocker un chiffre, si le caractère précédent était un -, on lit le chiffre en le stockant à la place du -, et on le change de signe sans incrémenter le nombre d'éléments, sinon on fait normalement.