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

  FORUM HardWare.fr
  Programmation
  C

  violation d'accès ou pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

violation d'accès ou pas

n°1933413
Nethacker
rule televisions, rule minds
Posté le 19-10-2009 à 20:03:11  profilanswer
 

Bonjour !
Voici mon programme !
http://ccoding.freehostia.com/show [...] c-to-all.c
 
tout se passe bien, à part une violation d'accès qui sort de nul part, surtout avec des nombres relativement grand, genre 10000 posera un problème, bien que la conversion la plus longue est celle en binaire, et qu'elle ne dépasse pas la limite du tableau càd 20.
 
Pouvez-vous m'indiquer d'où vient le problème, j'ai beau tâtonné avec le débugger en vain .
 
Merci d'avance !

mood
Publicité
Posté le 19-10-2009 à 20:03:11  profilanswer
 

n°1933416
Taz
bisounours-codeur
Posté le 19-10-2009 à 20:07:19  profilanswer
 

Code :
  1. 1. #include <stdio.h> 
  2.    2. 
  3.    3. 
  4.    4. int main() 
  5.    5. { 
  6.    6. int base[14][20],compteur[14],reste=0,i,division,decimal; 
  7.    7. 
  8.    8. //Initialisation du compteur   
  9.    9. for(i=0;i<=14;i++) 
  10.   10. compteur[i] = 0; 
  11.   11. 
  12.   12. printf("Entrez un nombre en base decimale :\n" ); 
  13.   13. scanf("%d",&decimal); 
  14.   14. 
  15.   15. // de 2 à 16   
  16.   16. for(i=2;i<=16;i++) 
  17.   17. { 
  18.   18. division = decimal; 
  19.   19.          while(division != 0) 
  20.   20.          { 
  21.   21.          reste = division%i; 
  22.   22.          division = division/i; 
  23.   23.          base[i-2][compteur[i-2]++] = reste; 
  24.   24.          } 
  25.   25. 
  26.   26. compteur[i-2]--; //dernier element du tab est indexé n-1   
  27.   27. printf("\nBase %d : ",i); 
  28.   28.                 while(compteur[i-2] >= 0) 
  29.   29.                 { 
  30.   30.                 if (base[i-2][compteur[i-2]] >= 10) 
  31.   31.                 printf("%c",base[i-2][compteur[i-2]--]+55); //10+55 = 65(A)   
  32.   32.                 else 
  33.   33.                 printf("%d",base[i-2][compteur[i-2]--]); 
  34.   34.                 } 
  35.   35. 
  36.   36. } 
  37.   37. 
  38.   38. 
  39.   39. printf("\n" ); 
  40.   40. system("pause" ); 
  41.   41. return 0;     
  42.   42. }


 
base, compteur => 14 éléments, i sur [2; 16] => base[i-2][compteur[i-2] => explosion

n°1933419
regexp42
Eplucheur de RFC.
Posté le 19-10-2009 à 20:09:28  profilanswer
 

Tu itères ligne 16 de 2 à 16.
Ensuite tu vas tapper dans compteur[i - 2].
Compteur est un array de 14.
Donc quand tu passes la dernière fois, tu tappes dans compteur[14], la 15ème case.
 
Edit : grilled.


Message édité par regexp42 le 19-10-2009 à 20:09:59
n°1933426
Nethacker
rule televisions, rule minds
Posté le 19-10-2009 à 20:22:35  profilanswer
 

Ah oui, 16-2+1 ça fait 15, donc base[15][20] et compteur [15] !
 
Merci beaucoup vous deux !


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

  violation d'accès ou pas

 

Sujets relatifs
accés violation de la mémoireaccés violation de la mémoire
dataset -> violation accèsCatch (...) et violation d'accès
"Violation d'acces lors de l'ecriture"violation d'acces à la lecture
"Create table" Erreur de syntaxe ou violation d'accèsViolation d'accès à l'adresse ...
[MFC] Violation d'accès en lecture ? pourquoi ?violation d'acces avec fclose et delete
Plus de sujets relatifs à : violation d'accès ou pas


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