icyam
Messages postés2Date d'inscriptionmardi 14 juin 2011StatutMembreDernière intervention15 juin 2011
-
14 juin 2011 à 21:54
icyam
Messages postés2Date d'inscriptionmardi 14 juin 2011StatutMembreDernière intervention15 juin 2011
-
15 juin 2011 à 20:25
Bonjour,
Je me suis amuser a faire un petit programme console en c++ qui tourne très bien sous Win32. J'ai ecris ce programme avec C++ Builder et j'aimerai le faire trouner sur Linux et MacOs.
Après avoir convertie mon projet Builder en projet Code::Block sous Mac et puis sous Linux je rencontre un problème de library... En effet j'utilise dans mon programme les fonctions getch() & clrscr() et je n'arrive pas à les integrer sous Linux ou Mac car je ne trouve pas un lib conio.h ou équivalant.
je remplace bien mon getch() par un getchar() mais cela m'enléve les possibilités de controle de la touche frappée au clavier...
BunoCS
Messages postés15485Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention 2 septembre 2024103 15 juin 2011 à 09:10
Hello,
Conio n'est pas standard. Il faut préférer stdlib.
Pour effacer la console, essaie plutôt
system("cls");
ou
system("clear");
En quoi getchar() t'empêches de faire des contrôles?
#include <stdio.h>
int main ()
{
char c;
puts ("Enter text. Include a dot ('.') in a sentence to exit:");
do {
c=getchar();
putchar (c);
} while (c != '.');
return 0;
}
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
cptpingu
Messages postés3840Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention23 août 2024126 15 juin 2011 à 14:13
Si tu pouvais éviter de faire du getch ou du clrscr, ça serait vraiment mieux...
Un terminal a vocation a écrire du texte, et c'est tout. Si tu veux maîtriser la position d'affichage, c'est une application graphique qu'il te faut (mode fenêtré ou ncurse pour du graphique console).
Néanoinms, j'avais codé un équivalent de getch pour Linux, qui devrait t'intéresser:
Le voici:
#include <termios.h>
#include
#include <stdio.h>
#include <stdlib.h>
struct termios g_term_conf;
int unix_getch()
{
struct termios newt;
int ch;
newt = g_term_conf;
newt.c_lflag &= ~(ICANON);
tcsetattr(STDIN_FILENO, TCSANOW, &newt);
ch = getchar();
tcsetattr(STDIN_FILENO, TCSANOW, &g_term_conf);
return ch;
}
int main(void)
{
int i = 0;
char line[21] = {0};
tcgetattr(STDIN_FILENO, &g_term_conf);
printf("Hello world!\n");
while (i < 20)
{
line[i] = unix_getch();
++i;
}
printf("\nLa ligne vaut %s\n", line);
return 0;
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
icyam
Messages postés2Date d'inscriptionmardi 14 juin 2011StatutMembreDernière intervention15 juin 2011 15 juin 2011 à 20:25
Bonsoir,
Je vous remercie tout les deux... je vais essayer de remanier mon code sans getch() ou avec un équivalent ton équivalent sous Unix/Linux qui je le suppose doit fonctionner sous MacOs également...