OBJET.h: typedef struct Vecteur{ Point p0; Point p1; }Vect; typedef struct Parallelogramme{ Point p1; Point p2; Point p3; Couleur couleur; Couleur texture; }Parallelogramme; typedef struct Triangle{ Point p1; Point p2; Point p3; Couleur couleur; Couleur texture; }Triangle; typedef struct Cylindre{ Point p1; Point p2; float rayon; Couleur couleur; Couleur texture; }Cylindre; MAIN.C: // en declaration::::: Cylindre* cylindre1; resultat = scan("cylinder",texte); if(resultat==NULL) { printf("Ce fichier ne contient pas toutes les données nécessaires au traitement (cylindre)."); fclose(fichier); // On ferme le fichier qui a été ouvert return 0; } else { //cylindre = parse_cylindre(resultat); ERREUR DE CODE } PARSE_CYLINDRE: Cylindre* parse_cylindre(char* contenu); Cylindre* parse_cylindre(char* contenu) { int curs_first=find_curseur("<",contenu); int curs_last=find_curseur(">",contenu); int curs_rgb=find_curseur("rgb",contenu); int compt_virg = 0; int i = 0; Cylindre* cyl = (Cylindre*)malloc( sizeof(Cylindre) ); (*cyl).texture.r = 0; (*cyl).texture.g = 0; (*cyl).texture.b = 0; char valeur[TAILLE2]=""; valeur[TAILLE2-1] = '\0'; float x, y, z; if(curs_first==0 || curs_last==0) { printf("Des donnees sont manquantes pour le cube"); return; } else { while(contenu[curs_first]!='>' && contenu[curs_first] !='\0') { if(contenu[curs_first]!=',' && contenu[curs_first]!=' ' && contenu[curs_first]!='<' && contenu[curs_first]!='{') { switch(compt_virg) { case 0 : while(contenu[curs_first] !=',' && contenu[curs_first] !='>') { valeur[i] = contenu[curs_first]; curs_first++; i++; } compt_virg++; valeur[i] = '\0'; x = atof(valeur); i=0; break; case 1 : while(contenu[curs_first] !=',' && contenu[curs_first] !='>') { valeur[i] = contenu[curs_first]; curs_first++; i++; } compt_virg++; valeur[i] = '\0'; y = atof(valeur); i=0; break; case 2 : while(contenu[curs_first] !=',' && contenu[curs_first] !='>') { valeur[i] = contenu[curs_first]; curs_first++; i++; } compt_virg++; valeur[i] = '\0'; z = atof(valeur); i=0; compt_virg=0; break; default : curs_first++; break; } } else { curs_first++; } } (*cyl).p1.x = x; (*cyl).p1.y = y; (*cyl).p1.z = z; printf("cylindre: x=%f y=%f z=%f",x,y,z); while(contenu[curs_last]!='>' && contenu[curs_last] !='\0') { if(contenu[curs_last]!=',' && contenu[curs_last]!=' ' && contenu[curs_last]!='<' && contenu[curs_last]!='{') { switch(compt_virg) { case 0 : while(contenu[curs_last] !=',' && contenu[curs_last] !='>') { valeur[i] = contenu[curs_last]; curs_last++; i++; } compt_virg++; valeur[i] = '\0'; x = atof(valeur); i=0; break; case 1 : while(contenu[curs_last] !=',' && contenu[curs_last] !='>') { valeur[i] = contenu[curs_last]; curs_last++; i++; } compt_virg++; valeur[i] = '\0'; y = atof(valeur); i=0; break; case 2 : while(contenu[curs_last] !=',' && contenu[curs_last] !='>') { valeur[i] = contenu[curs_last]; curs_last++; i++; } compt_virg++; valeur[i] = '\0'; z = atof(valeur); i=0; compt_virg=0; break; default : curs_last++; break; } } else { curs_last++; } } (*cyl).p2.x = x; (*cyl).p2.y = y; (*cyl).p2.z = z; printf("cylindre2: x=%f y=%f z=%f",x,y,z); while(curs_last != curs_rgb && contenu[curs_last] != '}') // C'EST LUI QUI MERDE §§§ { if(contenu[curs_last] != ' ' && contenu[curs_last] != '\0' && contenu[curs_last]!='<' && contenu[curs_last]!='{') { valeur[i] = contenu[curs_last]; i++; } curs_last++; } valeur[i] = '\0'; (*cyl).rayon = atof(valeur); printf("Test"); } if(curs_rgb==0) { x=0; y=0; z=0; } else { while(contenu[curs_rgb]!='>' && contenu[curs_rgb] !='\0') { if(contenu[curs_rgb]!=',' && contenu[curs_rgb]!=' ' && contenu[curs_rgb]!='<' && contenu[curs_rgb]!='{') { switch(compt_virg) { case 0 : while(contenu[curs_rgb] !=',' && contenu[curs_rgb] !='>') { valeur[i] = contenu[curs_rgb]; curs_rgb++; i++; } compt_virg++; valeur[i] = '\0'; x = atof(valeur); i=0; break; case 1 : while(contenu[curs_rgb] !=',' && contenu[curs_rgb] !='>') { valeur[i] = contenu[curs_rgb]; curs_rgb++; i++; } compt_virg++; valeur[i] = '\0'; y = atof(valeur); i=0; break; case 2 : while(contenu[curs_rgb] !=',' && contenu[curs_rgb] !='>') { valeur[i] = contenu[curs_rgb]; curs_rgb++; i++; } compt_virg++; valeur[i] = '\0'; z = atof(valeur); i=0; compt_virg=0; break; default : curs_rgb++; break; } } else { curs_rgb++; } } } (*cyl).couleur.r = x; (*cyl).couleur.g = y; (*cyl).couleur.b = z; // printf("Test cylindre : %f/%f/%f - %f/%f/%f - Rayon : %f - Couleur : %f/%f/%f",(*cylindre).p1.x,(*cylindre).p1.y,(*cylindre).p1.z,(*cylindre).p2.x,(*cylindre).p2.y,(*cylindre).p2.z,(*cylindre).rayon,(*cylindre).obj.couleur.r,(*cylindre).obj.couleur.g,(*cylindre).obj.couleur.b); return cyl; }