airseb | il semblerait que mon programme fait une boucle infinie.
la variable "nb_indices[b]"qui est vers la fin de la fonction "lecture" s'affiche mais pas les "hello"
je n'ai pas d'erreurs, le programme s'exécute mais ne sort jamais de la fonction.
pouvez vous m'aider ?
voici le code :
Code :
- #include <stdio.h>
- #include <iostream.h>
- #include <string.h>
- #include <conio.h>
- #include <stdlib.h>
- //#include <GL/glut.h>
- #define nb_vertices 20000
- #define nb_faces 20000
- struct donnees
- {
- float tab_vertices [nb_vertices][3] ;
- int tab_sommets [nb_faces][3] ;
- };
- donnees tab_struct[50] ;
- int nb_indices[100] ;
- int i=0 ;
- int j=0 ;
- int k=0 ;
- int n=0 ;
- int m=0 ;
- int l, b ;
- int a=0 ;
- void lecture ()
- {
- char tmp [100] ;
- char tmp2 [100] ;
- char tmp3 [100] ;
- int temp [nb_vertices] ;
- char passe_ligne [200] ;
- char nom_fichier[] = "bob.ase" ;
- FILE *pointeur ; //pointeur sur le fichier
- if ((pointeur = fopen(nom_fichier, "r" )) == NULL)
- return ;
- do
- {
- fscanf(pointeur, "%s", tmp) ;
- if(strcmp ("*MESH_VERTEX", tmp) == 0)
- {
- a++ ;
- }
- }
- while (!feof(pointeur)) ;
- fseek (pointeur, 0,SEEK_SET) ;
- for (b=1;b<=a;b++)
- {
- do
- {
- fscanf(pointeur, "%s", tmp) ;
- }
- while (strcmp ("*MESH_VERTEX", tmp) != 0) ; //passe toutes les chaines en revue jusqu'a qu'a ce que tmp soit égal à chaine ("*MESH_VERTEX" )
- do//rempli le tableau de structure avec des coordonnées de vertices
- {
- fscanf (pointeur, "%d%f%f%f%s", &(temp[0]) ,&(tab_struct[b].tab_vertices[i][0]),
- &(tab_struct[b].tab_vertices[i][1]),&(tab_struct[b].tab_vertices[i][2]), tmp) ;
- cout << tab_struct[b].tab_vertices[i][0]<<" "<<tab_struct[b].tab_vertices[i][1]<<" "<< tab_struct[b].tab_vertices[i][2]<<endl ;
- i++ ;
- }
- while (strcmp (tmp, "}" )!=0) ;
- do
- {
- fscanf(pointeur, "%s", tmp2) ;
- }
- while (strcmp ("A:", tmp2) != 0) ;
- do //rempli le tableau de la structure avec le numero des sommets
- {
- fscanf (pointeur, "%d%s%d%s%d", &(tab_struct[b].tab_sommets[j][0]),tmp,
- &(tab_struct[b].tab_sommets[j][1]),tmp, &(tab_struct[b].tab_sommets[j][2])) ;
- //cout << tab_struct[b].tab_sommets[j][0]<<" "<<tab_struct[b].tab_sommets[j][1]<<" "<<tab_struct[b].tab_sommets[j][2]<< endl ;
- fgets (passe_ligne, 200, pointeur) ; //saute une ligne dans le fichier où les données ne servent pas
- fscanf (pointeur, "%s%s%s", tmp3, tmp, tmp);
- j=j+1 ;
- l=l+1 ;
- }
- while (strcmp(tmp3, "}" )!=0) ;
- nb_indices[b] = l*3;
- cout << nb_indices[b]<<endl ;
- l=0 ;
- }
- cout<< "hello1"<<endl ;
- fclose (pointeur) ;
- }
-
-
- void main ()
- {
- lecture () ;
- cout<< "hello2"<<endl ;
- }
|
Message édité par airseb le 26-01-2003 à 14:42:15
|