Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1440 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme de fgetc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme de fgetc

n°1673452
anisometro​pie
Posté le 18-01-2008 à 15:33:24  profilanswer
 

bonjour.
voici ma fonction. je lui demande d'aller lire des caracteres dans un fichier.
ici i et j varient de 1 à 12, la fonction est sensée me lire 144 caractères. mais elle s'arrete à 24
voici ce que me disent les        printf("%d %d ",i,j);
      printf("%c",coordonnees[i][j]);:
lire niveau 1 1 M1 2 m1 3 m1 4 m1 5 m1 6  1 7 m1 8 m1 9 m1 10  1 11 m1 12 m2 1 �2 2 �2 3 �2 4 �2 5 �2 6 �2 7 �2 8 �2 9 �2 10 �2 11 �2 12 �
à partir de i = 2 le caractere n'est pas reconnu (alors que dans le fichier tout est normal)
et i = 3 tout plante
 
 

Code :
  1. void lireNiveau (char coordonnees[DIMENSIONS+1][DIMENSIONS+1],SDL_Surface* surfaces[DIMENSIONS+1][DIMENSIONS+1], SDL_Surface **mario,SDL_Rect *positionMario)
  2. {
  3. printf("lire niveau " );
  4. int i,j;
  5. FILE* niveau = NULL;
  6. niveau = fopen("niveau", "r" );
  7. if (niveau != NULL)
  8. {
  9.  for (i=1;i<=DIMENSIONS;i++)
  10.  {
  11.   for(j=1;j<=DIMENSIONS;j++)
  12.   {
  13.    coordonnees[i][j] = fgetc(niveau);
  14.    switch(coordonnees[i][j])
  15.    {
  16.     case 'o':
  17.      printf("%d %d ",i,j);
  18.      printf("%c",coordonnees[i][j]);
  19.      surfaces[i][j] = IMG_Load("objectif.png" );
  20.      break;
  21.     case 'm':
  22.      printf("%d %d ",i,j);
  23.      printf("%c",coordonnees[i][j]);
  24.      surfaces[i][j] = IMG_Load("mur.jpg" );
  25.      break;
  26.     case 'c':
  27.      printf("%d %d ",i,j);
  28.      printf("%c",coordonnees[i][j]);
  29.      surfaces[i][j] = IMG_Load("caisse.jpg" );
  30.      break;
  31.     case 'M':
  32.      printf("%d %d ",i,j);
  33.      printf("%c",coordonnees[i][j]);
  34.      *mario = IMG_Load("mario_bas.gif" );
  35.      break;
  36.     default:
  37.      printf("%d %d ",i,j);
  38.      printf("%c",coordonnees[i][j]);
  39.      break;
  40.    }
  41.   }
  42.  fclose(niveau); // On ferme le fichier qui a été ouvert
  43.  }
  44. }
  45. }


 
je suppose que le fget est à l'origine de cela  quand je lance le programme:

Code :
  1. *** glibc detected *** ./main: double free or corruption (!prev): 0x000000000062f400 ***
  2. ======= Backtrace: =========
  3. /lib/libc.so.6[0x2b64600a3fca]
  4. /lib/libc.so.6(cfree+0x8c)[0x2b64600a7b5c]
  5. /lib/libc.so.6(fclose+0x14c)[0x2b6460092d6c]
  6. ./main[0x401293]
  7. ./main[0x400c87]
  8. /lib/libc.so.6(__libc_start_main+0xf4)[0x2b646004e1c4]
  9. ./main[0x400ab9]
  10. ======= Memory map: ========
  11. 00400000-00402000 r-xp 00000000 08:06 24887301                           /home/anisometropie/programmes/programmation c/zMARIO/main
  12. 00601000-00602000 rw-p 00001000 08:06 24887301                           /home/anisometropie/programmes/programmation c/zMARIO/main
  13. 00602000-00645000 rw-p 00602000 00:00 0                                  [heap]
  14. 2b645f938000-2b645f955000 r-xp 00000000 08:01 1254458                    /lib/ld-2.7.so
  15. 2b645f955000-2b645f958000 rw-p 2b645f955000 00:00 0
  16. 2b645f958000-2b645f95f000 r--s 00000000 08:01 473886                     /usr/lib/gconv/gconv-modules.cache
  17. 2b645f971000-2b645f981000 r-xp 00000000 08:01 478789                     /usr/lib/libXext.so.6.4.0
  18. 2b645f981000-2b645fa81000 ---p 00010000 08:01 478789                     /usr/lib/libXext.so.6.4.0
  19. 2b645fa81000-2b645fa82000 rw-p 00010000 08:01 478789                     /usr/lib/libXext.so.6.4.0
  20. 2b645fb54000-2b645fb56000 rw-p 0001c000 08:01 1254458                    /lib/ld-2.7.so
  21. 2b645fb56000-2b645fbc3000 r-xp 00000000 08:01 483819                     /usr/lib/libSDL-1.2.so.0.11.0
  22. 2b645fbc3000-2b645fdc3000 ---p 0006d000 08:01 483819                     /usr/lib/libSDL-1.2.so.0.11.0
  23. 2b645fdc3000-2b645fdc6000 rw-p 0006d000 08:01 483819                     /usr/lib/libSDL-1.2.so.0.11.0
  24. 2b645fdc6000-2b645fe14000 rw-p 2b645fdc6000 00:00 0
  25. 2b645fe14000-2b645fe1f000 r-xp 00000000 08:01 481379                     /usr/lib/libSDL_image-1.2.so.0.1.5
  26. 2b645fe1f000-2b646001f000 ---p 0000b000 08:01 481379                     /usr/lib/libSDL_image-1.2.so.0.1.5
  27. 2b646001f000-2b6460020000 rw-p 0000b000 08:01 481379                     /usr/lib/libSDL_image-1.2.so.0.1.5
  28. 2b6460020000-2b6460030000 rw-p 2b6460020000 00:00 0
  29. 2b6460030000-2b6460184000 r-xp 00000000 08:01 1254382                    /lib/libc-2.7.so
  30. 2b6460184000-2b6460384000 ---p 00154000 08:01 1254382                    /lib/libc-2.7.so
  31. 2b6460384000-2b6460387000 r--p 00154000 08:01 1254382                    /lib/libc-2.7.so
  32. 2b6460387000-2b6460389000 rw-p 00157000 08:01 1254382                    /lib/libc-2.7.so
  33. 2b6460389000-2b646038e000 rw-p 2b6460389000 00:00 0
  34. 2b646038e000-2b6460467000 r-xp 00000000 08:01 472814                     /usr/lib/libasound.so.2.0.0
  35. 2b6460467000-2b6460666000 ---p 000d9000 08:01 472814                     /usr/lib/libasound.so.2.0.0
  36. 2b6460666000-2b646066e000 rw-p 000d8000 08:01 472814                     /usr/lib/libasound.so.2.0.0
  37. 2b646066e000-2b646066f000 rw-p 2b646066e000 00:00 0
  38. 2b646066f000-2b6460675000 r-xp 00000000 08:01 480226                     /usr/lib/libartsc.so.0.0.0
  39. 2b6460675000-2b6460874000 ---p 00006000 08:01 480226                     /usr/lib/libartsc.so.0.0.0
  40. 2b6460874000-2b6460875000 rw-p 00005000 08:01 480226                     /usr/lib/libartsc.so.0.0.0
  41. 2b6460875000-2b6460878000 r-xp 00000000 08:01 472697                     /usr/lib/libgmodule-2.0.so.0.1400.3
  42. 2b6460878000-2b6460a77000 ---p 00003000 08:01 472697                     /usr/lib/libgmodule-2.0.so.0.1400.3
  43. 2b6460a77000-2b6460a78000 rw-p 00002000 08:01 472697                     /usr/lib/libgmodule-2.0.so.0.1400.3
  44. 2b6460a78000-2b6460a7a000 r-xp 00000000 08:01 1254391                    /lib/libdl-2.7.so
  45. 2b6460a7a000-2b6460c7a000 ---p 00002000 08:01 1254391                    /lib/libdl-2.7.so
  46. 2b6460c7a000-2b6460c7c000 rw-p 00002000 08:01 1254391                    /lib/libdl-2.7.so
  47. 2b6460c7c000-2b6460c7d000 rw-p 2b6460c7c000 00:00 0
  48. 2b6460c7d000-2b6460c81000 r-xp 00000000 08:01 472701                     /usr/lib/libgthread-2.0.so.0.1400.3
  49. 2b6460c81000-2b6460e80000 ---p 00004000 08:01 472701                     /usr/lib/libgthread-2.0.so.0.1400.3
  50. 2b6460e80000-2b6460e81000 rw-p 00003000 08:01 472701                     /usr/lib/libgthread-2.0.so.0.1400.3
  51. 2b6460e81000-2b6460e89000 r-xp 00000000 08:01 1254455                    /lib/librt-2.7.so
  52. 2b6460e89000-2b6461088000 ---p 00008000 08:01 1254455                    /lib/librt-2.7.so
  53. 2b6461088000-2b646108a000 rw-p 00007000 08:01 1254455                    /lib/librt-2.7.so
  54. 2b646108a000-2b6461136000 r-xp 00000000 08:01 472695                     /usr/lib/libglib-2.0.so.0.1400.3
  55. 2b6461136000-2b6461335000 ---p 000ac000 08:01 472695                     /usr/lib/libglib-2.0.so.0.1400.3
  56. 2b6461335000-2b6461337000 rw-p 000ab000 08:01 472695                     /usr/lib/libglib-2.0.so.0.1400.3
  57. 2b6461337000-2b6461338000 rw-p 2b6461337000 00:00 0
  58. 2b6461338000-2b6461340000 r-xp 00000000 08:01 480246                     /usr/lib/libesd.so.0.2.36
  59. 2b6461340000-2b6461440000 ---p 00008000 08:01 480246                     /usr/lib/libesd.so.0.2.36
  60. 2b6461440000-2b6461441000 rw-p 00008000 08:01 480246                     /usr/lib/libesd.so.0.2.36
  61. 2b6461441000-2b6461465000 r-xp 00000000 08:01 480233                     /usr/lib/libaudiofile.so.0.0.2
  62. 2b6461465000-2b6461665000 ---p 00024000 08:01 480233                     /usr/lib/libaudiofile.so.0.0.2
  63. 2b6461665000-2b6461669000 rw-p 00024000 08:01 480233                     /usr/lib/libaudiofile.so.0.0.2
  64. 2b6461669000-2b64616e9000 r-xp 00000000 08:01 1254397                    /lib/libm-2.7.so
  65. 2b64616e9000-2b64618e8000 ---p 00080000 08:01 1254397                    /lib/libm-2.7.so
  66. 2b64618e8000-2b64618ea000 rw-p 0007f000 08:01 1254397                    /lib/libm-2.7.so
  67. 2b64618ea000-2b64618eb000 rw-p 2b64618ea000 00:00 0
  68. 2b64618eb000-2b6461902000 r-xp 00000000 08:01 476270                     /usr/lib/libaudio.so.2.4
  69. 2b6461902000-2b6461b02000 ---p 00017000 08:01 476270                     /usr/lib/libaudio.so.2.4
  70. 2b6461b02000-2b6461b03000 rw-p 00017000 08:01 476270                     /usr/lib/libaudio.so.2.4
  71. 2b6461b03000-2b6461b5e000 r-xp 00000000 08:01 478781                     /usr/lib/libXt.so.6.0.0
  72. 2b6461b5e000-2b6461d5d000 ---p 0005b000 08:01 478781                     /usr/lib/libXt.so.6.0.0
  73. 2b6461d5d000-2b6461d63000 rw-p 0005a000 08:01 478781                     /usr/lib/libXt.so.6.0.0
  74. 2b6461d63000-2b6461d64000 rw-p 2b6461d63000 00:00 0
  75. 2b6461d64000-2b6461dc1000 r-xp 00000000 08:01 483796                     /usr/lib/libdirectfb-0.9.so.25.0.0
  76. 2b6461dc1000-2b6461fc1000 ---p 0005d000 08:01 483796                     /usr/lib/libdirectfb-0.9.so.25.0.0
  77. 2b6461fc1000-2b6461fc4000 rw-p 0005d000 08:01 483796                     /usr/lib/libdirectfb-0.9.so.25.0.0
  78. 2b6461fc4000-2b6461fc5000 rw-p 2b6461fc4000 00:00 0
  79. 2b6461fc5000-2b6461fcb000 r-xp 00000000 08:01 483797                     /usr/lib/libfusion-0.9.so.25.0.0
  80. 2b6461fcb000-2b64621ca000 ---p 00006000 08:01 483797                     /usr/lib/libfusion-0.9.so.25.0.0
  81. 2b64621ca000-2b64621cb000 rw-p 00005000 08:01 483797                     /usr/lib/libfusion-0.9.so.25.0.0
  82. 2b64621cb000-2b64621da000 r-xp 00000000 08:01 483795                     /usr/lib/libdirect-0.9.so.25.0.0
  83. 2b64621da000-2b64623d9000 ---p 0000f000 08:01 483795                     /usr/lib/libdirect-0.9.so.25.0.0
  84. 2b64623d9000-2b64623db000 rw-p 0000e000 08:01 483795                     /usr/lib/libdirect-0.9.so.25.0.0
  85. 2b64623db000-2b6462428000 r-xp 00000000 08:01 481372                     /usr/lib/libvga.so.1.4.3
  86. 2b6462428000-2b6462627000 ---p 0004d000 08:01 481372                     /usr/lib/libvga.so.1.4.3
  87. 2b6462627000-2b6462630000 rw-p 0004c000 08:01 481372                     /usr/lib/libvga.so.1.4.3
  88. 2b6462630000-2b646263a000 rw-p 2b6462630000 00:00 0
  89. 2b646263a000-2b6462655000 r-xp 00000000 08:01 481848                     /usr/lib/libaa.so.1.0.4
  90. 2b6462655000-2b6462854000 ---p 0001b000 08:01 481848                     /usr/lib/libaa.so.1.0.4
  91. 2b6462854000-2b6462857000 rw-p 0001a000 08:01 481848                     /usr/lib/libaa.so.1.0.4
  92. 2b6462857000-2b6462859000 rw-p 2b6462857000 00:00 0
  93. 2b6462859000-2b6462862000 r-xp 00000000 08:01 472822                     /usr/lib/libcaca.so.0.99.13
  94. 2b6462862000-2b6462a62000 ---p 00009000 08:01 472822                     /usr/lib/libcaca.so.0.99.13
  95. 2b6462a62000-2b6462a63000 rw-p 00009000 08:01 472822                     /usr/lib/libcaca.so.0.99.13
  96. 2b6462a63000-2b6462a75000 r-xp 00000000 08:01 472818                     /usr/lib/libcucul.so.0.99.13
  97. 2b6462a75000-2b6462c75000 ---p 00012000 08:01 472818                     /usr/lib/libcucul.so.0.99.13
  98. 2b6462c75000-2b6462cfc000 rw-p 00012000 08:01 472818                     /usr/lib/libcucul.so.0.99.13
  99. 2b6462cfc000-2b6462d01000 rw-p 2b6462cfc000 00:00 0
  100. 2b6462d01000-2b6462d17000 r-xp 00000000 08:01 1254396                    /lib/libpthread-2.7.so
  101. 2b6462d17000-2b6462f16000 ---p 00016000 08:01 1254396                    /lib/libpthread-2.7.so
  102. 2b6462f16000-2b6462f18000 rw-p 00015000 08:01 1254396                    /lib/libpthread-2.7.so
  103. 2b6462f18000-2b6462f1c000 rw-p 2b6462f18000 00:00 0
  104. 2b6462f1c000-2b6462f3f000 r-xp 00000000 08:01 478796                     /usr/lib/libpng12.so.0.15.0
  105. 2b6462f3f000-2b646313f000 ---p 00023000 08:01 478796                     /usr/lib/libpng12.so.0.15.0
  106. 2b646313f000-2b6463140000 rw-p 00023000 08:01 478796                     /usr/lib/libpng12.so.0.15.0
  107. 2b6463140000-2b6463156000 r-xp 00000000 08:01 481548                     /usr/lib/libz.so.1.2.3.3
  108. 2b6463156000-2b6463356000 ---p 00016000 08:01 481548                     /usr/lib/libz.so.1.2.3.3
  109. 2b6463356000-2b6463357000 rw-p 00016000 08:01 481548                     /usr/lib/libz.so.1.2.3.3
  110. 2b6463357000-2b6463358000 rw-p 2b6463357000 00:00 0
  111. 2b6463358000-2b646337e000 r-xp 00000000 08:01 473725                     /usr/lib/libpcre.so.3.12.1
  112. 2b646337e000-2b646357e000 ---p 00026000 08:01 473725                     /usr/lib/libpcre.so.3.12.1
  113. 2b646357e000-2b646357f000 rw-p 00026000 08:01 473725                     /usr/lib/libpcre.so.3.12.1
  114. 2b646357f000-2b6463587000 r-xp 00000000 08:01 478779                     /usr/lib/libSM.so.6.0.0
  115. 2b6463587000-2b6463786000 ---p 00008000 08:01 478779                     /usr/lib/libSM.so.6.0.0
  116. 2b6463786000-2b6463787000 rw-p 00007000 08:01 478779                     /usr/lib/libSM.so.6.0.0
  117. 2b6463787000-2b6463788000 rw-p 2b6463787000 00:00 0
  118. 2b6463788000-2b646379e000 r-xp 00000000 08:01 478777                     /usr/lib/libICE.so.6.3.0
  119. 2b646379e000-2b646399e000 ---p 00016000 08:01 478777                     /usr/lib/libICE.so.6.3.0
  120. 2b646399e000-2b646399f000 rw-p 00016000 08:01 478777                     /usr/lib/libICE.so.6.3.0
  121. 2b646399f000-2b64639a3000 rw-p 2b646399f000 00:00 0
  122. 2b64639a3000-2b6463aa5000 r-xp 00000000 08:01 478730                     /usr/lib/libX11.so.6.2.0
  123. 2b6463aa5000-2b6463ba5000 ---p 00102000 08:01 478730                     /usr/lib/libX11.so.6.2.0
  124. 2b6463ba5000-2b6463bac000 rw-p 00102000 08:01 478730                     /usr/lib/libX11.so.6.2.0
  125. 2b6463bac000-2b6463bde000 r-xp 00000000 08:01 1254307                    /lib/libx86.so.1
  126. 2b6463bde000-2b6463cdd000 ---p 00032000 08:01 1254307                    /lib/libx86.so.1
  127. 2b6463cdd000-2b6463ce0000 rw-p 00031000 08:01 1254307                    /lib/libx86.so.1
  128. 2b6463ce0000-2b6463ce2000 rw-p 2b6463ce0000 00:00 0
  129. 2b6463ce2000-2b6463d1a000 r-xp 00000000 08:01 1254250                    /lib/libncurses.so.5.6
  130. 2b6463d1a000-2b6463f1a000 ---p 00038000 08:01 1254250                    /lib/libncurses.so.5.6
  131. 2b6463f1a000-2b6463f1e000 rw-p 00038000 08:01 1254250                    /lib/libncurses.so.5.6
  132. 2b6463f1e000-2b6463f1f000 rw-p 2b6463f1e000 00:00 0
  133. 2b6463f1f000-2b6463fec000 r-xp 00000000 08:01 1254364                    /lib/libslang.so.2.1.3
  134. 2b6463fec000-2b64641ec000 ---p 000cd000 08:01 1254364                    /lib/libslang.so.2.1.3
  135. 2b64641ec000-2b6464208000 rw-p 000cd000 08:01 1254364                    /lib/libslang.so.2.1.3
  136. 2b6464208000-2b6464267000 rw-p 2b6464208000 00:00 0
  137. 2b6464267000-2b646426c000 r-xp 00000000 08:01 477799                     /usr/lib/libgpm.so.1.19.6
  138. 2b646426c000-2b646436c000 ---p 00005000 08:01 477799                     /usr/lib/libgpm.so.1.19.6
  139. 2b646436c000-2b646436d000 rw-p 00005000 08:01 477799                     /usr/lib/libgpm.so.1.19.6
  140. 2b646436d000-2b646436e000 rw-p 2b646436d000 00:00 0
  141. 2b646436e000-2b6464370000 r-xp 00000000 08:01 478726                     /usr/lib/libXau.so.6.0.0
  142. 2b6464370000-2b646446f000 ---p 00002000 08:01 478726                     /usr/lib/libXau.so.6.0.0
  143. 2b646446f000-2b6464470000 rw-p 00001000 08:01 478726                     /usr/lib/libXau.so.6.0.0
  144. 2b6464470000-2b6464475000 r-xp 00000000 08:01 478728                     /usr/lib/libXdmcp.so.6.0.0
  145. 2b6464475000-2b6464574000 ---p 00005000 08:01 478728                     /usr/lib/libXdmcp.so.6.0.0
  146. 2b6464574000-2b6464575000 rw-p 00004000 08:01 478728                     /usr/lib/libXdmcp.so.6.0.0
  147. 2b6464575000-2b6464578000 rw-p 2b6464575000 00:00 0
  148. 2b6464578000-2b6464581000 r-xp 00000000 08:01 478773                     /usr/lib/libXrender.so.1.3.0
  149. 2b6464581000-2b6464780000 ---p 00009000 08:01 478773                     /usr/lib/libXrender.so.1.3.0
  150. 2b6464780000-2b6464781000 rw-p 00008000 08:01 478773                     /usr/lib/libXrender.so.1.3.0
  151. 2b6464781000-2b6464787000 r-xp 00000000 08:01 478815                     /usr/lib/libXrandr.so.2.1.0
  152. 2b6464787000-2b6464987000 ---p 00006000 08:01 478815                     /usr/lib/libXrandr.so.2.1.0
  153. 2b6464987000-2b6464988000 rw-p 00006000 08:01 478815                     /usr/lib/libXrandr.so.2.1.0
  154. 2b6464988000-2b6464991000 r-xp 00000000 08:01 478805                     /usr/lib/libXcursor.so.1.0.2
  155. 2b6464991000-2b6464b91000 ---p 00009000 08:01 478805                     /usr/lib/libXcursor.so.1.0.2
  156. 2b6464b91000-2b6464b92000 rw-p 00009000 08:01 478805                     /usr/lib/libXcursor.so.1.0.2
  157. 2b6464b92000-2b6464b97000 r-xp 00000000 08:01 478732                     /usr/lib/libXfixes.so.3.1.0
  158. 2b6464b97000-2b6464c96000 ---p 00005000 08:01 478732                     /usr/lib/libXfixes.so.3.1.0
  159. 2b6464c96000-2b6464c97000 rw-p 00004000 08:01 478732                     /usr/lib/libXfixes.so.3.1.0
  160. 2b6464c97000-2b6464c99000 r-xp 00000000 08:01 474888                     /usr/lib/gconv/ISO8859-1.so
  161. 2b6464c99000-2b6464e98000 ---p 00002000 08:01 474888                     /usr/lib/gconv/ISO8859-1.so
  162. 2b6464e98000-2b6464e9a000 rw-p 00001000 08:01 474888                     /usr/lib/gconv/ISO8859-1.so
  163. 2b6464e9a000-2b6464f3d000 rw-s 00000000 00:09 25526275                   /SYSV00000000 (deleted)
  164. 2b6464f3d000-2b6464f3e000 rw-p 2b6464f3d000 00:00 0
  165. 2b6464f57000-2b6464f64000 r-xp 00000000 08:01 1254346                    /lib/libgcc_s.so.1
  166. 2b6464f64000-2b6465164000 ---p 0000d000 08:01 1254346                    /lib/libgcc_s.so.1
  167. 2b6465164000-2b6465165000 rw-p 0000d000 08:01 1254346                    /lib/libgcc_s.so.1
  168. 2b6468000000-2b6468021000 rw-p 2b6468000000 00:00 0
  169. 2b6468021000-2b646c000000 ---p 2b6468021000 00:00 0
  170. 7fff4b15d000-7fff4b172000 rw-p 7fff4b15d000 00:00 0                      [stack]
  171. ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vdso]
  172. lire niveau 1 0 M2 0 �Abandon


Message édité par anisometropie le 18-01-2008 à 15:52:10

---------------
I didn't mean you're useless. I only meant you never do anything of any use.
mood
Publicité
Posté le 18-01-2008 à 15:33:24  profilanswer
 

n°1673471
anisometro​pie
Posté le 18-01-2008 à 15:53:30  profilanswer
 

pour info voici le code complet, merci d'avance

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <SDL/SDL.h>
  4. #include <SDL/SDL_image.h>
  5. #include "main.h"
  6. int main(int argc, char *argv[])
  7. {
  8. if (SDL_Init(SDL_INIT_VIDEO) == -1) // Démarrage de la SDL. Si erreur alors...
  9. {
  10.  fprintf(stderr, "Erreur d'initialisation de la SDL : %s\n", SDL_GetError()); // Ecriture de l'erreur
  11.  exit(EXIT_FAILURE); // On quitte le programme
  12. }
  13. int i,j;
  14. int continuer = 1;
  15. char coordonnees[DIMENSIONS+1][DIMENSIONS+1];
  16. SDL_Surface *surfaces[DIMENSIONS+1][DIMENSIONS+1];
  17. SDL_Event event;
  18. SDL_WM_SetCaption("Ma super fenêtre SDL !", NULL);
  19. SDL_Surface *ecran = NULL;
  20. SDL_Surface *mario = NULL;
  21. SDL_Rect positionMario;
  22. for (i=1;i<=DIMENSIONS;i++)
  23. {
  24.  for(j=1;j<=DIMENSIONS;j++)
  25.  {
  26.   surfaces[i][j] = NULL;
  27.  }
  28. }
  29. ecran = SDL_SetVideoMode(DIMENSIONS * 34, DIMENSIONS * 34, 32, SDL_HWSURFACE);
  30. SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  31. lireNiveau (coordonnees,surfaces,&mario,&positionMario);
  32. afficherNiveau(surfaces, &ecran);
  33. SDL_BlitSurface(mario, NULL, ecran, &positionMario);
  34. SDL_Flip(ecran);
  35. while (continuer)
  36. {
  37.  SDL_WaitEvent(&event);
  38.  switch(event.type)
  39.  {
  40.   case SDL_QUIT:
  41.    continuer = 0;
  42.    break;
  43.   case SDL_KEYDOWN:
  44.    switch(event.key.keysym.sym)
  45.    {
  46.     case SDLK_UP: // Flèche haut
  47.      positionMario.y-=34;
  48.      mario = IMG_Load("mario_haut.gif" );
  49.      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  50.      SDL_BlitSurface(mario, NULL, ecran, &positionMario);
  51.      SDL_Flip(ecran);
  52.      break;
  53.     case SDLK_DOWN: // Flèche bas
  54.      positionMario.y+=34;
  55.      mario = IMG_Load("mario_bas.gif" );
  56.      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  57.      SDL_BlitSurface(mario, NULL, ecran, &positionMario);
  58.      SDL_Flip(ecran);
  59.      break;
  60.     case SDLK_RIGHT: // Flèche droite
  61.      positionMario.x+=34;
  62.      mario = IMG_Load("mario_droite.gif" );
  63.      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  64.      SDL_BlitSurface(mario, NULL, ecran, &positionMario);
  65.      SDL_Flip(ecran);
  66.      break;
  67.     case SDLK_LEFT: // Flèche gauche
  68.      positionMario.x-=34;
  69.      mario = IMG_Load("mario_gauche.gif" );
  70.      SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
  71.      SDL_BlitSurface(mario, NULL, ecran, &positionMario);
  72.      SDL_Flip(ecran);
  73.      break;
  74.    }
  75.    break;
  76.  }
  77. }
  78. return EXIT_SUCCESS;
  79. }
  80. void lireNiveau (char coordonnees[DIMENSIONS+1][DIMENSIONS+1],SDL_Surface* surfaces[DIMENSIONS+1][DIMENSIONS+1], SDL_Surface **mario,SDL_Rect *positionMario)
  81. {
  82. printf("lire niveau " );
  83. int i,j;
  84. FILE* niveau = NULL;
  85. niveau = fopen("niveau", "r" );
  86. if (niveau != NULL)
  87. {
  88.  for (i=1;i<=DIMENSIONS;i++)
  89.  {
  90.   for(j=1;j<=DIMENSIONS;j++)
  91.   {
  92.    coordonnees[i][j] = fgetc(niveau);
  93.    switch(coordonnees[i][j])
  94.    {
  95.     case 'o':
  96.      printf("%d %d ",i,j);
  97.      printf("%c",coordonnees[i][j]);
  98.      surfaces[i][j] = IMG_Load("objectif.png" );
  99.      break;
  100.     case 'm':
  101.      printf("%d %d ",i,j);
  102.      printf("%c",coordonnees[i][j]);
  103.      surfaces[i][j] = IMG_Load("mur.jpg" );
  104.      break;
  105.     case 'c':
  106.      printf("%d %d ",i,j);
  107.      printf("%c",coordonnees[i][j]);
  108.      surfaces[i][j] = IMG_Load("caisse.jpg" );
  109.      break;
  110.     case 'M':
  111.      printf("%d %d ",i,j);
  112.      printf("%c",coordonnees[i][j]);
  113.      *mario = IMG_Load("mario_bas.gif" );
  114.      break;
  115.     default:
  116.      printf("%d %d ",i,j);
  117.      printf("%c",coordonnees[i][j]);
  118.      break;
  119.    }
  120.   }
  121.  fclose(niveau); // On ferme le fichier qui a été ouvert
  122.  }
  123. }
  124. }
  125. void coordonneesVersPosition (int x, int y,SDL_Rect *position)
  126. {
  127. position->x = 12 * x;
  128. position->y = 12 * y;
  129. }
  130. void positionVersCoordonnees (SDL_Rect position, int *x, int *y)
  131. {
  132. *x = position.x /12 ;
  133. *y = position.y /12 ;
  134. }
  135. void afficherNiveau(SDL_Surface *surfaces[DIMENSIONS+1][DIMENSIONS+1], SDL_Surface **ecran)
  136. {
  137. printf("afficher niveau" );
  138. SDL_FillRect(*ecran, NULL, SDL_MapRGB((*ecran)->format, 255, 255, 255));
  139. SDL_Rect position;
  140. int i;
  141. int j;
  142. for(i=1;i<=DIMENSIONS;i++)
  143. {
  144.  for(j=1;j<=DIMENSIONS;j++)
  145.  {
  146.   coordonneesVersPosition (i, j,&position);
  147.   SDL_BlitSurface(surfaces[i][j], NULL, *ecran, &position);
  148.   SDL_Flip(*ecran);
  149.  }
  150. }
  151. }


Message édité par anisometropie le 18-01-2008 à 16:50:09

---------------
I didn't mean you're useless. I only meant you never do anything of any use.
n°1673475
Elmoricq
Modérateur
Posté le 18-01-2008 à 16:02:28  profilanswer
 

Comment est écrit le fichier niveau ?
 
Question subsidiaire : pourquoi tu fais démarrer tes indices à 1 au lieu de 0 ?

n°1673480
anisometro​pie
Posté le 18-01-2008 à 16:08:35  profilanswer
 

le fichier niveau est comme ca :
Mmmmm mmm mmm  mmmm mmm mmm     m    mm mmm mm mmm          mmmmmmmmmm          mmmmmmmmmm          mmmmmmmmmm          mmmmmmmmmm          oooo
 
pour les indices c'est pour se reperer plus facilement


---------------
I didn't mean you're useless. I only meant you never do anything of any use.
n°1673503
anisometro​pie
Posté le 18-01-2008 à 16:51:34  profilanswer
 

je comprend pas pourquoi à partir du 13 ème caractere fgetc renvoie -1 alors que dans le fichier  il n'y a pas de problemes


Message édité par anisometropie le 18-01-2008 à 16:52:07

---------------
I didn't mean you're useless. I only meant you never do anything of any use.
n°1673510
anisometro​pie
Posté le 18-01-2008 à 17:02:25  profilanswer
 

fichtre ! je fermais mon fichier à la fin du premier for, normal qu'il y arrive pas


Message édité par anisometropie le 18-01-2008 à 17:08:14

---------------
I didn't mean you're useless. I only meant you never do anything of any use.
n°1673518
Elmoricq
Modérateur
Posté le 18-01-2008 à 17:38:37  profilanswer
 

J'avais pas vu non plus. [:god]
 
Moralité : une bonne indentation permet de repérer plus facilement ce genre de bévue. [:dawao]

n°1673691
matafan
Posté le 19-01-2008 à 08:04:43  profilanswer
 

Puis fgetc renvoie un int, pas un char. Parce que tu peux très bien avoir un (char)-1 (caractère de code ascii 0x255, je crois que c'est un y avec deux points dessus en iso8859-1) dans ton fichier.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme de fgetc

 

Sujets relatifs
Problème de boucle...?Problème insertion de video youtube sur image.
probléme de comptabilité sous internet explorer 7Probleme pour recuprer une variable dans un code embed vers un swf
Probleme de DIV sous IE / FirefoxProblème PHP include
Probleme pour mise en place d'un site sur serveur ftp numericableProblème avec les DIV
[Résolu] Problème de character set XML et PHP (SimpleXML)Probléme d'image dans un tableau PHP/MYSQL
Plus de sujets relatifs à : probleme de fgetc


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR