Pacman / kbhit() / linux - C - Programmation
Marsh Posté le 09-10-2005 à 16:44:38
Déjà, le cast est inutile sur malloc() (je vais me la mettre en signature, cette phrase ).
Ensuite, ton test de tab[i]==NULL tu devrais le mettre à l'intérieur de la boucle for.
Sinon je ne vois pas d'erreur particulière, MAX vaut quoi ?
Tu as essayé de regarder la valeur de errno pour savoir pourquoi malloc() avait échoué ?
Marsh Posté le 09-10-2005 à 16:46:40
Elmoricq a écrit : Déjà, le cast est inutile sur malloc() (je vais me la mettre en signature, cette phrase ). |
elle est la, l'erreur, tab[i] tape un cran trop loin
Marsh Posté le 09-10-2005 à 16:49:00
chrisbk a écrit : elle est la, l'erreur, tab[i] tape un cran trop loin |
j'avais pas fait gaffe, j'avais juste tilté "c'est pas le comportement qu'on veut"
De fait, comportement indéfini, ça fonctionne aléatoirement. D'où l'erreur.
Marsh Posté le 09-10-2005 à 16:50:00
MAX vaut 40, sinon j'ai mis le test de tab[i] dans la boucle et maintenant il ne m'affiche plus d'erreur... je vais isoler les fonctions du reste du programme pour voir.
EDIT : quel gland je suis j'avais même pas vu i vaut taille donc il est en dehors du tableau
merci
Marsh Posté le 09-10-2005 à 17:26:15
D-Jey a écrit : Salut |
En dehors des erreurs signalées, un peu rustique. Je te conseille ça :
|
Pose des questions si tu ne comprends pas.
Marsh Posté le 09-10-2005 à 17:29:15
ReplyMarsh Posté le 09-10-2005 à 17:37:25
chrisbk a écrit : quitte a tout remettre a NULL a la main, autant faire un calloc non ? |
On en a déjà parlé ici (je crois). calloc() appelle memset() et met donc tous les bits à 0. Ce n'est pas forcément la représentation correcte de NULL pour toutes les plateformes
Marsh Posté le 09-10-2005 à 23:27:49
ReplyMarsh Posté le 10-10-2005 à 20:18:09
D-Jey a écrit : Je continue mes questions ici, voir premier post |
Euh... personnellement, j'ai la flemme de suivre ce qui s'est passé, tu devrais mettre à la suite.
C'est un peu fouilli là
Marsh Posté le 10-10-2005 à 21:56:04
Je continue mes questions sur le même topic.
Bon pour mon petit pacman j'ai biensur été confronté au problème du kbhit() et j'ai donc utilisé la méthode de Taz qui fonctionne très bien .
Le problème c'est qu'avec la boucle while le programme bouffe méchament les ressources CPU, donc je me suis dis : tu va mettre un ptit sleep()! enfin la j'utilise un napms(), c'est mieux mais pas encore ca... puis en fonction du temps que je met ca ralentit l'affichage (logique).
Avez vous une idée/astuce pour améliorer le schmilblick ?
voila ma boucle while qui chope les entrées clavier :
Code :
|
Je précise : linux/gcc/pacman sous shell
Marsh Posté le 11-10-2005 à 09:16:07
euh salut
Il est vrai que le topic est pas très clair, j'avais compris que cette question avait été résolu.
Pour les grosses boucle qui tourne bcp et souvent dans le vent tu as une fonction qui te permet de faire un "stand by" pour ton CPU.
Je l'ai utilisé sous Unix sa devrai marcher ==> man pause
edit : ==> man pause(2)
bon courage ++ sLiZeR
(redemande si tu trouve pas)
Marsh Posté le 09-10-2005 à 16:38:25
Salut
Je continue mes questions sur le même topic.
Bon pour mon petit pacman j'ai biensur été confronté au problème du kbhit() et j'ai donc utilisé la méthode de Taz qui fonctionne très bien .
Le problème c'est qu'avec la boucle while le programme bouffe méchament les ressources CPU, donc je me suis dis : tu va mettre un ptit sleep()! enfin la j'utilise un napms(), c'est mieux mais pas encore ca... puis en fonction du temps que je met ca ralentit l'affichage (logique).
Avez vous une idée/astuce pour améliorer le schmilblick ?
voila ma boucle while qui chope les entrées clavier :
Je précise : linux/gcc/pacman sous shell
/*------------------------ [RESOLU] ------------------------*/
J'ai commencé un genre de ptit pacman pour apprendre à bien maitriser les tableaux 2D mais voila lors de l'allocation de mon tableau j'ai une erreur de segmentation (je suis sous linux) alors que le même code fonctionne très bien sous win
vla l'code de mon allocation :
et je l'apelle comme ca :
Il compile bien mais lorsque j'execute il me dit "erreur2" et je vois pas ou est mon erreur sachant que ca fonctionnait bien sous win
Merci d'avance
/*------------------------ [/RESOLU] ------------------------*/
Message édité par D-Jey le 09-10-2005 à 23:26:52