cs_manubarnum
Messages postés8Date d'inscriptionsamedi 30 octobre 2004StatutMembreDernière intervention21 novembre 2004 17 nov. 2004 à 16:31
Ben pour ce que j'y connais, voilà un petit programme simple et efficace. Merci
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 18 sept. 2004 à 13:27
ce depend de l'os utilisée, si c'est la mandrake pour xbox c'est sur
sinon ca reste un w2k light en mode reel, ca doit se faire avec des interruptions
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 18 sept. 2004 à 13:19
sur une xbox tu coderais en unix/linux ^^ assurément.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 18 sept. 2004 à 09:16
"Je voulais dire que le C de Microsoft et Borland, possède des fonctions non standard destinées à MS-DOS et Windows"
oui, mais c'est le cas pour tout les systeme ! le c standard t'assure la portabilité du code mais chaque os possede ses propres api pour faire des appels systemes de bas niveau et assurement non portable, et surtout d'une notion beaucoup moins abstraites que le c standard
c'est pour ca que le terme "deux catégories de C" ne me semble pas aproprié
en fait il y a le c standard puis ce qui est propres a chaque os ( api pour les appels systemes)
on a donc pas seulement unix + windows borland mais tout !
comment on ferais sur une xbox par exemple ?
c'est logique que si tu touche au clavier ton code n'est plus portable puisque la notion de clavier ne l'est pas
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 18 sept. 2004 à 01:27
Kirua > Merci à toi aussi pour la précision. Je n'ai jamais travaillé sur Dev C++ ni sur GCC, ce sont des choses que j'ai lues sur le net juste pour savoir ce qui se fait ailleurs. Je n'ai jamais travaillé sur UNIX ni sur Linux non plus...
djl > J'avoue que j'ai beaucoup hésité avant d'employer le mot "catégorie" car j'ai pas trouvé un terme plus approprié. Je voulais dire que le C de Microsoft et Borland, possède des fonctions non standard destinées à MS-DOS et Windows. Ce qui rend les codes sources, contenant ces fonctions, non portables vers les autres systèmes comme UNIX. Le C du monde UNIX doit lui aussi avoir ses particularités. Quand je regarde un source pour UNIX ou Linux, je n'arrive pas à tout comprendre. Le C standard est le tronc commun pour les deux. Les compilateurs C standard ne peuvent pas s'empêcher de pénaliser l'un ou l'autre sytème d'exploitation.
A propos de getch(), si tu peux la faire facilement, je te dis BRAVO. Je pense que c'est possible à condition d'avoir les connaissances et les outils nécessaires car, d'après ce que j'ai appris, le sytème UNIX est un serveur qui communique avec des terminaux (clavier+écran) sous forme de flux (fichiers+réseau). Je peux me tromper car je n'ai aucune expérience en UNIX.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 17 sept. 2004 à 19:04
mais on s'en fou de ca !
le c standard (ansi,iso) ne connais pas le clavier, l'ecran, ...
les i/o sont gerée avec des flux par abstraction
si tu veux toucher au clavier tu fais un appel system propre a ton os
on peut tres bien faire un getch sous les systeme unix, suffit que le peripherique clavier existe et de le coder
racpp > c'est assez confus ce que tu dis, surtout les "deux catégories de C"
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 17 sept. 2004 à 18:32
Dev-C++ est juste un EDI qui exploite (par défaut) GCC et G++, ce n'est pas un compilateur.
du reste, merci pr les précisions, j'ignorais que le clavier était considéré comme un fichier sous unix!
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 17 sept. 2004 à 16:37
djl > Pour le C standard le clavier n'existe pas. En fait il y'a deux catégories de C. Celle du monde MS-DOS+Windows et celle du monde UNIX+Linux. Dans la première (Microsoft, Borland etc), le clavier existe bel et bien grâce aux fonctions comme getch(), getche() et kbhit(). Dans la deuxième catégorie le clavier est considéré comme un fichier car le système d'exploitation UNIX est conçu ainsi. Un code contenant getch() par exemple ne peut pas être complilé pour focntionner sous un tel système. Les compilateurs GCC et DEV C++ sont standard (ANSI-C) donc ne connaissent pas le clavier. Mais quand ils sont installés sur Windows, ils peuvent utiliser les fonctions clavier en ajoutant des librairies d'émulation.
Le souce présenté ici est fait pour DOS ou Windows pas pour UNIX ou Linux.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 17 sept. 2004 à 01:08
les constantes ? mais elles existent deja ! on renvoi le code des touches
int getch()
D1m3x > getchar lit stdin (pas le clavier), comment tu veux savoir si on a appuyé sur une touche F*
et surtout comment tu veut qu'un programme quit lit le clavier soit portable, le c ne connais pas le clavier
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 16 sept. 2004 à 07:42
pas renvoyer une char*, ça demanderait de comparer des chaînes. il vaut mieux définir des constantes:
const int kF1 = 59;
const int kF2 = 60;
...
ça permet de ne gérer que des entiers, c'est plus rapide.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 15 sept. 2004 à 18:54
Il est vrai que "conio.h" n'est pas une librairie AINSI-C mais elle existe dans tous les compilateurs pour MS-DOS et Windows :
-Tous les compilateurs de Microsoft (Visual C++ etc).
-Tous les compilateurs de Borland (Turbo, Builder etc).
-Les compilateurs DJGPP.
Pour les autres, qui appartiennent initialement au monde UNIX , il existe des émulations:
-Dev c++: remplacer "conio.h" par "conio.c".
-LCC Win32: fichier "conio.h" téléchargeable.
Moi je ne travaille que sur DOS et Windows, c'est pour cela que j'ai un peu généralisé en disant "tous les compilateurs".
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 15 sept. 2004 à 17:04
salut,
Merci pour ces remarques mais je précise que ce source est tout à fait portable. En effet "conio.h" existe dans tous les compilateurs. J'ai utilisé "cprintf" et "getch" car ils font partie de "conio.h". La fonction getchar() n'est pas utilisable ici car elle attend l'appui sur ENTREE. Il serait inutile d'inclure "stdio.h" rien que pour printf() car cprintf() fait exactement la même chose. Ca n'a rien à voir avec la couleur. L'idée d'une fonction qui retourne un char* est bonne mais mon objectif est de rester le plus simple possible pour bien montrer le fonctionnement du code, surtout pour les débutants. Côté portabilité, je viens de le tester sur un vieux compilateur TURBO C de 1988. Il a juste suffit d'ajouter "\r" après les "\n" pour forcer le retour au début de la ligne.
D1m3x
Messages postés402Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention21 juillet 20051 15 sept. 2004 à 13:14
Essaye de rendre le programme un peu plus portable, déjà en utilisant le simple printf( ), pas besoin de couleur après tout... Ensuite en utilisant getchar( ) de stdio.h et ton programme sera bon :)
Tu peux également en faire une fonction par exemple, alors tu peux créer une fonction qui retourne un char * qui dira quel touche a été appuyé, donc tu fais un getchar( ) dans la fonction et tu regarde si c'est F1 alors tu écris: "F1" dans le char * etc... enfin rien que des sugestion!!!
17 nov. 2004 à 16:31
18 sept. 2004 à 13:27
sinon ca reste un w2k light en mode reel, ca doit se faire avec des interruptions
18 sept. 2004 à 13:19
18 sept. 2004 à 09:16
oui, mais c'est le cas pour tout les systeme ! le c standard t'assure la portabilité du code mais chaque os possede ses propres api pour faire des appels systemes de bas niveau et assurement non portable, et surtout d'une notion beaucoup moins abstraites que le c standard
c'est pour ca que le terme "deux catégories de C" ne me semble pas aproprié
en fait il y a le c standard puis ce qui est propres a chaque os ( api pour les appels systemes)
on a donc pas seulement unix + windows borland mais tout !
comment on ferais sur une xbox par exemple ?
c'est logique que si tu touche au clavier ton code n'est plus portable puisque la notion de clavier ne l'est pas
18 sept. 2004 à 01:27
djl > J'avoue que j'ai beaucoup hésité avant d'employer le mot "catégorie" car j'ai pas trouvé un terme plus approprié. Je voulais dire que le C de Microsoft et Borland, possède des fonctions non standard destinées à MS-DOS et Windows. Ce qui rend les codes sources, contenant ces fonctions, non portables vers les autres systèmes comme UNIX. Le C du monde UNIX doit lui aussi avoir ses particularités. Quand je regarde un source pour UNIX ou Linux, je n'arrive pas à tout comprendre. Le C standard est le tronc commun pour les deux. Les compilateurs C standard ne peuvent pas s'empêcher de pénaliser l'un ou l'autre sytème d'exploitation.
A propos de getch(), si tu peux la faire facilement, je te dis BRAVO. Je pense que c'est possible à condition d'avoir les connaissances et les outils nécessaires car, d'après ce que j'ai appris, le sytème UNIX est un serveur qui communique avec des terminaux (clavier+écran) sous forme de flux (fichiers+réseau). Je peux me tromper car je n'ai aucune expérience en UNIX.
17 sept. 2004 à 19:04
le c standard (ansi,iso) ne connais pas le clavier, l'ecran, ...
les i/o sont gerée avec des flux par abstraction
si tu veux toucher au clavier tu fais un appel system propre a ton os
on peut tres bien faire un getch sous les systeme unix, suffit que le peripherique clavier existe et de le coder
racpp > c'est assez confus ce que tu dis, surtout les "deux catégories de C"
17 sept. 2004 à 18:32
du reste, merci pr les précisions, j'ignorais que le clavier était considéré comme un fichier sous unix!
17 sept. 2004 à 16:37
Le souce présenté ici est fait pour DOS ou Windows pas pour UNIX ou Linux.
17 sept. 2004 à 01:08
int getch()
D1m3x > getchar lit stdin (pas le clavier), comment tu veux savoir si on a appuyé sur une touche F*
et surtout comment tu veut qu'un programme quit lit le clavier soit portable, le c ne connais pas le clavier
16 sept. 2004 à 07:42
const int kF1 = 59;
const int kF2 = 60;
...
ça permet de ne gérer que des entiers, c'est plus rapide.
15 sept. 2004 à 18:54
-Tous les compilateurs de Microsoft (Visual C++ etc).
-Tous les compilateurs de Borland (Turbo, Builder etc).
-Les compilateurs DJGPP.
Pour les autres, qui appartiennent initialement au monde UNIX , il existe des émulations:
-Dev c++: remplacer "conio.h" par "conio.c".
-LCC Win32: fichier "conio.h" téléchargeable.
Moi je ne travaille que sur DOS et Windows, c'est pour cela que j'ai un peu généralisé en disant "tous les compilateurs".
15 sept. 2004 à 17:04
Merci pour ces remarques mais je précise que ce source est tout à fait portable. En effet "conio.h" existe dans tous les compilateurs. J'ai utilisé "cprintf" et "getch" car ils font partie de "conio.h". La fonction getchar() n'est pas utilisable ici car elle attend l'appui sur ENTREE. Il serait inutile d'inclure "stdio.h" rien que pour printf() car cprintf() fait exactement la même chose. Ca n'a rien à voir avec la couleur. L'idée d'une fonction qui retourne un char* est bonne mais mon objectif est de rester le plus simple possible pour bien montrer le fonctionnement du code, surtout pour les débutants. Côté portabilité, je viens de le tester sur un vieux compilateur TURBO C de 1988. Il a juste suffit d'ajouter "\r" après les "\n" pour forcer le retour au début de la ligne.
15 sept. 2004 à 13:14
Tu peux également en faire une fonction par exemple, alors tu peux créer une fonction qui retourne un char * qui dira quel touche a été appuyé, donc tu fais un getchar( ) dans la fonction et tu regarde si c'est F1 alors tu écris: "F1" dans le char * etc... enfin rien que des sugestion!!!
en tout cas tu devrais le rendre portable :)
ciao ;)