Lire un ligne non defini...

Signaler
Messages postés
136
Date d'inscription
samedi 1 mai 2004
Statut
Membre
Dernière intervention
26 mai 2007
-
Messages postés
212
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
28 mai 2011
-
Hello!


J'ai un souci, je sais pas comment faire!

Je dois lire un fichier qui est généré par un autre programme, donc je ne peux pas le modifier.

Dans ce fichier il a des lignes du style:


P 0,300 3,50 60,40 5,30;

P 50,00 80,100 100,120 40,50 600,10 30,30;

P 60,80 60,90 90,20 30,10 40, 40

   50,60 70,100 50,80;


Voila, en fait ces lignes definissent des polygone que je dois ensuite
dessiner en OpenGL, mais le probleme n'est pas l OpenGL mais la lecture
des lignes car comme vous pouvez le constater, chaque ligne na pas le
meme nombre de coordonné! et des fois les coordonnées quand il y en a
beaucoup passent a la ligne!

P defini que c'est un polygone,

les ensuite il y a les coordonné de chaques point

(dans le fichier j'ai aussi des Wire a dessiner du style W 20 30,40
50,50 avec le premier int etant la largeur du wire et ensuite les
coordonnées des points a lier qui comme les P peut varier en nombre)


Donc ma question est quelle est la meilleure manière de pouvoir lire ca?

D'habitude quand c'est bien défini j'utilise sscanf(chaine, "P %d,%d %d,%d %d,%d", ...)

mais la vu que le nombre de %d,%d est variable je vois pas du tout comment faire!!


Merci beaucoup pour votre aide si vous avez une direction a me donner!


jojo

2 réponses

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
21
On pourrais avoir un truc du genre :
Attention, rien n'est testé dans ce code !

int i, j;
int nbrPoly = 0;
int ntabValRecup[NBR_POLY_MAX][NBR_POINT_MAX];


do
{
   // recup ligne par ligne
   fin = fgets(sLigne, 255, fichier);
      i j 0;
   
   // travail sur polygones
   if( sLigne[i] == 'P' )
   {
     while( true )
     {
         // Nouveau poly
         if( sLigne[i] == ';' )
         {
             nbrPoly++;
             break;   
         }


         // Nouvelle ligne
         if( sLigne[i] == '\n' )
             break;


         // les points
         if( sLigne[i] == ' ' || sLigne[i] == ',' )
             i++;


         // recup val
         sscanf(sLigne+i, "%d", &ntabValRecup[nbrPoly][j]);
         j++;
      }
   }
}while( fin != NULL );
Messages postés
212
Date d'inscription
dimanche 3 avril 2005
Statut
Membre
Dernière intervention
28 mai 2011
2
Si c'est pas un secret c'est quoi le logiciel qui te donne des fichiers de ce genre?

<hr size="2" width="100%" />Trafic web gratuit!!!