probleme de malloc ou de scanf ?

probleme de malloc ou de scanf ? - C - Programmation

Marsh Posté le 24-01-2008 à 22:03:50    

Bonjour,
 
voici mon programme !
Pourquoi lorseque j attribue une valeur à NBCASESCOTE mon programme marche, mais il ne marche pas pas avec scanf ...
 
Y a t il une erreur ds mon programme ???
 
T est un tableau a NBCASESCOTE*NBCASESCOTE elements
PIECE une structure que j ai créé et tabPieces un tableau de PIECE NBCASESCOTE*NBCASESCOTE elements
matJeu et matReserve sont deux matrice a NBCASESCOTE*NBCASESCOTE elements
 
 

Code :
  1. int i,
  2. int NBCASESCOTE;
  3. PIECE *tabPieces;
  4. int **matJeu;
  5. int **matReserve;
  6. int *T;
  7. printf("entrer une valeur de NBCASECOTE !!! " );
  8. scanf("%d",&NBCASESCOTE);
  9. tabPieces=malloc((NBCASESCOTE*NBCASESCOTE)* sizeof(PIECE));
  10. T=malloc((NBCASESCOTE*NBCASESCOTE)* sizeof(int));
  11. matReserve=malloc(NBCASESCOTE *sizeof(int*));
  12. for (i = 0; i < NBCASESCOTE; i++)
  13. {
  14. matReserve[i] =malloc(NBCASESCOTE * sizeof(int));
  15. }
  16. matJeu=malloc(NBCASESCOTE * sizeof(int*));
  17. for (i = 0; i < NBCASESCOTE; i++)
  18. {
  19. matJeu[i] =  malloc(NBCASESCOTE * sizeof(int));
  20. }


 
 
 
MERCI d avance  
Cordialement,

Reply

Marsh Posté le 24-01-2008 à 22:03:50   

Reply

Marsh Posté le 24-01-2008 à 22:26:36    

svp c est urgent je doit rendre ce progrmma pr demain demain
 
MERCI Encore,

Reply

Marsh Posté le 24-01-2008 à 22:32:36    

Code :
  1. mais il ne marche pas pas avec scanf


Et c'est quoi exactement le problème ? À première vue le programme semble correct, bien que scanf soit un peu casse gueule à l'utilisation.
 
En mettant un :

Code :
  1. printf("NBCASESCOTE = %d\n", NBCASESCOTE);


 
Juste après ton scanf(), ça donne quoi ?


Message édité par tpierron le 24-01-2008 à 22:32:59
Reply

Marsh Posté le 24-01-2008 à 22:51:17    

si j enleve le scanf de mon programme et que je mets par exple NBCASESCOTE=7 ou 6 ou 5 ca marche ...
 
avec un scanf mon prog démmare en me demandant d entrer une valeur a NBCASESCOTE, une fois le nombre entrer ca ne se lance pas !
 
J ai bien ajouté :
printf("NBCASESCOTE = %d\n", NBCASESCOTE);
 
Mais ca ne marche tjrs pas,  
Qu est ce qui differe si tu demandes d afficher nbcasecote ?

Reply

Marsh Posté le 24-01-2008 à 22:59:21    

game_over a écrit :

si j enleve le scanf de mon programme et que je mets par exple NBCASESCOTE=7 ou 6 ou 5 ca marche ...
 
avec un scanf mon prog démmare en me demandant d entrer une valeur a NBCASESCOTE, une fois le nombre entrer ca ne se lance pas !
 
J ai bien ajouté :
printf("NBCASESCOTE = %d\n", NBCASESCOTE);
 
Mais ca ne marche tjrs pas,  
Qu est ce qui differe si tu demandes d afficher nbcasecote ?


C'est à dire "ça ne se lance pas"?
 
le printf t'indique juste si la valeur tapée a été correctement placée dans ta variable (ce qui devrait être le cas).


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 24-01-2008 à 23:03:45    

En faite c est pr un jeu que j ai programmé ETRNITY
 
qd je mets 6 ou 7, le jeu me genere bien un plateau de jeu a 7x7 elements ou 6x6,
par contre qd "ça ne se lance pas", ca me genere un point sur l ecran au lieu d un plateau de jeu !
 
j espere assez avoir était clair  
Merci encore pr ton aide

Reply

Marsh Posté le 24-01-2008 à 23:10:03    

Utilise un debugger, arrête ton prog au moment de la création de tes tableaux et à partir de là, avance pas à pas en surveillant tes variables jusqu'à la création de ton plateau graphique. T'es sous quel OS?


---------------
deluser --remove-home ptitchep
Reply

Marsh Posté le 24-01-2008 à 23:56:20    

Mon probleme est resolu,
 
J'avais mis mon alloc dynamique ds une fonction. et je faisai appel a la fonction apres la definition de T. C'est pour cela que ca marchait pour NBCASESCOTE=6 ou 5 car c'était à l'exterieur du main();
 
Vraiment désolé pr le derangement
Ton aide ma était tres utile, pr bien defnir ma fonction malloc();
 
Encore Merci ! :)

Reply

Marsh Posté le 25-01-2008 à 00:00:08    

game_over a écrit :

svp c est urgent je doit rendre ce progrmma pr demain demain
 
MERCI Encore,


game_over a écrit :

Mon probleme est resolu,
 
J'avais mis mon alloc dynamique ds une fonction. et je faisai appel a la fonction apres la definition de T. C'est pour cela que ca marchait pour NBCASESCOTE=6 ou 5 car c'était à l'exterieur du main();
 
Vraiment désolé pr le derangement
Ton aide ma était tres utile, pr bien defnir ma fonction malloc();
 
Encore Merci ! :)


Bonne nuit et bon courage pour demain.
 
En tout cas ça devait être vachement pressé pour faire autant de fautes ;)


---------------
deluser --remove-home ptitchep
Reply

Sujets relatifs:

Leave a Replay

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