Bonjour !

Voila le soucis qui me tient en haleine depuis un ptit moment.

J'ai une fonction me permettant de lire chaque caractère d'un fichier et de placer ce qui est entre mes délimiteurs dans des variables temporaires. Puis, le contenu des variables interressante cera recopier dans des variables dur !

Voici le 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
 
#include <stdio.h> 
#include <string.h>
#include <stdlib.h>  
void exo1(void);  
 
int main (void)
{
  int choix=0, exit=0;
  while((choix==0)&&(exit==0)) 
  {
 
    printf("1. truc test\n");
    printf("4. Quitter l'application\n\n");
 
    printf("Saisir votre choix : ");
    scanf("%d",&choix);
 
    switch (choix)
    {
      case 1 : exo1();
               break;
      case 4 : exit=1;
               break;   
      default : printf("Erreur de saisie\n");
               break;
    }
    choix=0;
  }       
}  
 
 
void exo1(void) 
{ 
// Pré-traitement
  FILE *file; 
  char Buffer[200]; 
  char carac;
  char litnb[5];
  int i,j;
  int lu;
  int nblignes;
 
/* - Déclaration pour le tri des informations - */
  char    *pointeur;  //variable dans laquel on stocke l'adresse de la séléction
  char    *separateur = { ":;" }; // Le séparateur 
  int      nbVar;
  char     tempo[30];
  char     var[38][30];
 
// Traitement
  printf("\ndebut\n");   
  if((file = fopen("donne", "r")) != NULL) //on ouvre le fichier et verifie si on y arrive 
  { 
    while (lu != 0)
    {
      lu=fread(litnb, 4, 1, file); //on range les caractere dans le buffer 
      litnb[4] = '\0';
      i=0;
      do 
      { 
 
        lu=fread(&carac, 1, 1, file); //on range les caractere dans le buffer 
        if(lu != 0)
        {
          Buffer[i++] = carac;
        }
      } while ((carac != '\n')&&(lu != 0));
 
      if(lu != 0)
      {
         Buffer[--i]='\0';
         printf("%s\n", Buffer); //on affiche ce que contient le buffer 
      }
      /* - Tri de la ligne lu - */
 
      pointeur = strtok( Buffer, separateur ); 
      strcpy(var[0],pointeur); //copie ce qui est pointé par pointeur dans tempo[0]
 
      nbVar=1;
      while( pointeur != NULL ) 
      { 
     // Cherche les autres separateurs 
        pointeur = strtok( NULL, separateur ); 
        if ( pointeur != NULL ) 
        {    
          strcpy(var[nbVar],pointeur); //copie ce qui est pointé par pointeur dans var[nbVar]
          nbVar++;  //incremente le numéro de nbVar
        } 
      } 
 
    }
 
    fclose(file); 
  }
  nblignes = atoi(litnb);
  printf("nblignes : %s",litnb);
  printf("nblignes : %d",nblignes);
 
  printf("\n");
  for(i=0;i<20;i++)
  {
    printf("var %d : %s\n",i,var[i]);
  }
 
 
// Post-traitement
  printf("\nfin\n");
 
}
Je n'ai aucun problème de compilation, tout ce fait correctement sauf que le premier caractère du fichier n'est pas lu !

En effet, voici ce que doit lire la focntion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
232
16:23:45;a0:1024,1023,1000,1003,1023;a1:?,?,?,?,?;a2:?,?,?,?,?;a3:3001,3003,3002,3003,3002;t:01?1001??01?0101
Et là, c'est le drame, car il ne m'affiche pas 232 mais 32 ....

Je ne comprend pas, j'ai tenter de replacer le pointeur au début du fichier, cela n'a rien changé ... ou alors, c'est que je me suis trompé !

Voili, si vous avez des ptits trucs a me dire ...

Merci !