[résolu]Probleme sous Visual Studio avec FILE

Probleme sous Visual Studio avec FILE [résolu] - C - Programmation

Marsh Posté le 16-06-2006 à 17:48:28    

Bonjour à tous,
 
je m'excuse d'avance si le problème n'aurait pas du aller dans cette section mais plutot dans "Software", mais je me suis dis que peut etre plus de personnes y auraient été confrontées ici.
 
Donc voila , pour la fac j'ai un projet à réaliser mais devant travailler chez moi et ayant Visual Studio, je me suis dis que je pourrais coder ca chez moi. Je demande rapidement a un pote s'il n'y a pas de probleme avec VC++ il me dit que tout roule. Le probleme est que lors de la compilation, VC++ me sort des erreurs avec FILE *f... , erreurs que je n'ai pas sur le serveur de la fac. Je vous colle le code et les erreurs.
Merchi d'avance:)
 

Code :
  1. void readFile(char* nom_fichier) {
  2. FILE *fp = fopen( nom_fichier, "r" );
  3. remove("source.c" );
  4. FILE *fout = fopen("source.c", "w" );
  5. char ligne[128];
  6. char nom[16], couleur[16], type[16];
  7. char* buffer;
  8. float t,x,y,z;
  9. fprintf(fout, "#include <stdio.h>\n" );
  10. fprintf(fout, "#include <GL/gl.h>\n" );
  11. fprintf(fout, "#include <GL/glut.h>\n" );
  12. fprintf(fout, "#include <GL/glu.h>" );
  13. fprintf(fout, "\n\nfloat rot=0;\n\n" );
  14. fprintf(fout, "void convertColor(char* couleur){\n" );
  15. fprintf(fout," \tif( ! strcmp ( couleur, \"rouge\" )){\n\t\tglColor3f(1,0,0);\n\t}\n" );
  16. fprintf(fout," \telse if( ! strcmp ( couleur, \"vert\" )){\n\t\tglColor3f(0,1,0);\n\t}" );
  17. fprintf(fout," \telse if( ! strcmp ( couleur, \"bleu\" )){\n\t\tglColor3f(0,0,1);\n\t}" );
  18. fprintf(fout," \telse if( ! strcmp ( couleur, \"gris\" )){\n\t\tglColor3f(0.5,0.5,0.5);\n\t}" );
  19. fprintf(fout, "}\n\n" );
  20. fprintf(fout, "void cube(float longueur, float x, float y, float z, char* couleur){\n\t" );
  21. fprintf(fout, "float moitie=longueur/2;\n\n\tconvertColor(couleur);\n\n" );
  22. fprintf(fout, "\t//Face avant\n\tglVertex3f((x-moitie),(y+moitie),(z+moitie));\n\tglVertex3f((x-moitie),(y-moitie),(z+moitie));\n\tglVertex3f((x+moitie),(y-moitie),(z+moitie));\n\tglVertex3f((x+moitie),(y+moitie),(z+moitie));\n\n" );
  23. fprintf(fout, "\t//Face droite\n\tglVertex3f((x+moitie),(y+moitie),(z+moitie));\n\tglVertex3f((x+moitie),(y-moitie),(z+moitie));\n\tglVertex3f((x+moitie),(y-moitie),(z-moitie));\n\tglVertex3f((x+moitie),(y+moitie),(z-moitie));\n\n" );
  24. fprintf(fout, "\t//Face gauche\n\tglVertex3f((x-moitie),(y+moitie),(z-moitie));\n\tglVertex3f((x-moitie),(y-moitie),(z-moitie));\n\tglVertex3f((x-moitie),(y-moitie),(z+moitie));\n\tglVertex3f((x-moitie),(y+moitie),(z+moitie));\n\n" );
  25. fprintf(fout, "\t//Face arriere\n\tglVertex3f((x+moitie),(y+moitie),(z-moitie));\n\tglVertex3f((x+moitie),(y-moitie),(z-moitie));\n\tglVertex3f((x-moitie),(y-moitie),(z-moitie));\n\tglVertex3f((x-moitie),(y+moitie),(z-moitie));\n\n" );
  26. fprintf(fout, "\t//Face dessous\n\tglVertex3f((x+moitie),(y-moitie),(z+moitie));\n\tglVertex3f((x-moitie),(y-moitie),(z+moitie));\n\tglVertex3f((x-moitie),(y-moitie),(z-moitie));\n\tglVertex3f((x+moitie),(y-moitie),(z-moitie));\n\n" );
  27. fprintf(fout, "\t//Face dessus\n\tglVertex3f((x+moitie),(y+moitie),(z+moitie));\n\tglVertex3f((x+moitie),(y+moitie),(z+moitie));\n\tglVertex3f((x+moitie),(y+moitie),(z-moitie));\n\tglVertex3f((x-moitie),(y+moitie),(z-moitie));\n\n" );
  28. fprintf(fout, "}\n\n" );
  29. fprintf(fout, "void pyramide(float largeur, float hauteur, float x, float y, float z, char* couleur){\n\t" );
  30. fprintf(fout, "}\n\n" );
  31. fprintf(fout, "void reshape(int w, int h){\n\tglViewport(0,0,w,h);\n\tglMatrixMode(GL_PROJECTION);\n\tglLoadIdentity();\n\tgluPerspective(45,(float)w/(float)h,0.1,100);\n\tglMatrixMode(GL_MODELVIEW);\n\tglLoadIdentity();\n\tgluLookAt(4,4,4,0,0,0,0,1,0);\n}\n\n" );
  32. fprintf(fout, "void display(void){\n\tglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\n" );
  33. while( fgets( ligne, 128, fp)){
  34.    sscanf( ligne, "%s", nom);
  35.    /* lecture de la ligne differente en fonction de la primitive */
  36.  if( ! strcmp ( nom, "cube" ))
  37.  {
  38.   sscanf( ligne, "%s %f %f %f %f %s %s", nom, &t, &x, &y, &z, couleur, type);
  39.   fprintf(fout,"\tcube(%f,%f,%f,%f,\"%s\" );\n",t,x,y,z,couleur);
  40.  }
  41.  else if( ! strcmp ( nom , "pyramide" ))
  42.  {
  43.  }
  44.  else if( ! strcmp ( nom , "pave" ))
  45.  {
  46.  }
  47.  else if( ! strcmp ( nom , "sphere" ))
  48.  {
  49.  }
  50. }
  51. fprintf(fout,"\tglFlush();\n}\n\n" );
  52. fprintf(fout,"void keyboard(char key){\n\t" );
  53. fprintf(fout,"switch(key){\n\t\t" );
  54. fprintf(fout,"case '
  55. fprintf(fout,"}\n\n" );
  56. fprintf(fout, "int main(int args, char* argv[]){\n\tglutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE | GLUT_DEPTH);\n\tglutInitWindowSize(500, 500);\n\tglutCreateWindow(\"Projet sujet 1\" );\n\tglEnable(GL_DEPTH_TEST);\n\tglClearColor(1,0,0,0);\n\tglutDisplayFunc(display);\n\tglutReshapeFunc(reshape);\n\tglutKeyboardFunc(keyboard);\n\tglutMainLoop();\n\n" );
  57. fprintf(fout, "\treturn 0;\n}" );
  58. fclose(fout);
  59. fclose(fp);
  60. }


 
 
Les erreurs :
 

Code :
  1. c:\Documents and Settings\Ben\Mes documents\Visual Studio Projects\Infographie\generateur.c(9): error C2275: 'FILE' : utilisation non conforme de ce type comme expression
  2. c:\Documents and Settings\Ben\Mes documents\Visual Studio Projects\Infographie\generateur.c(9): error C2065: 'fout' : identificateur non déclaré
  3. c:\Documents and Settings\Ben\Mes documents\Visual Studio Projects\Infographie\generateur.c(10): warning C4047: '=' : 'int' diffère de 'FILE *' dans les niveaux d'indirection


Les autres erreurs proviennent surement du probleme avec FILE :)
 
Merci d'avance


Message édité par benamoubeach le 17-06-2006 à 14:27:05
Reply

Marsh Posté le 16-06-2006 à 17:48:28   

Reply

Marsh Posté le 16-06-2006 à 17:59:32    

T'as bien fait un

Code :
  1. #include <stdio.h>


au début de ton programme ?


Message édité par rnoizet le 16-06-2006 à 18:01:35
Reply

Marsh Posté le 16-06-2006 à 18:48:51    

oui :) désolé de ne pas l'avoir copié

Reply

Marsh Posté le 16-06-2006 à 23:14:08    

En C les déclarations doivent se faire avant les instructions, donc intervertis les deuxième et troisième lignes

Code :
  1. FILE *fp = fopen( nom_fichier, "r" );   
  2. remove("source.c" );   
  3. FILE *fout = fopen("source.c", "w" );

Reply

Marsh Posté le 16-06-2006 à 23:16:44    

utilise fputs a la place de fprintf

Reply

Marsh Posté le 17-06-2006 à 03:32:27    

j'ai essayé la solution de Trap D en commentant remove et cela fonctionne :) merci a toi.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed