IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

getch() sous linux


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 59
    Points : 44
    Points
    44
    Par défaut getch() sous linux
    Salut à tous. Voici mon pbm.
    je veux utiliser la fonction getch() sous linux pour récupérer un entier rentré dans le mode console. Mais voilà j'ai une erreur lors du lancement de l'executable.

    J'ai bien lus quelques infos sur le net et sur ce site, j'ai vu qu'il existait dans l'include <ncurses.h>son équivalent. Je l'ai donc inclus.
    A la compilation c'est bon (avec gcc) mais pas lors de la compil pour obtenir l'exec?
    Est-ce alors un pbm de librairies? j'ai fais l'essai sans le getch(), tout marche.
    dans "mon" <ncurses.h> j'ai bien une ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern NCURSES_EXPORT(int) getch (void);	/* generated */
    Là je sais pas trop ce que ça veut dire....

    Merci a vous. Voici le résultat du debogeur lors de la compil pour l'exec, ainsi que le code du prog. (C'est un prog sur les RPC's créé avec rpcgen: Programme client.C'est un exercice).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    gcc -c calcul_client.c
    [romeo@localhost xmlrpc++0.7]$ gcc -o client calcul_client.o calcul_clnt.o
    calcul_client.o(.text+0x12f): In function `main':
    : undefined reference to `stdscr'
    calcul_client.o(.text+0x134): In function `main':
    : undefined reference to `wgetch'
    collect2: ld returned 1 exit status
    [romeo@localhost xmlrpc++0.7]$
    Code du prog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    /*
     * This is sample code generated by rpcgen.
     * These are only templates and you can use them
     * as a guideline for developing your own functions.
     */
     
    #include <ncurses.h>
    #include "calcul.h"
     
    int  calcul_facto_1_arg;
     
    void
    calcul_1(char *host)
    {
    	CLIENT *clnt;
    	void  *result_1;
    	char *calcul_null_1_arg;
    	int  *result_2;
     
     
     
     
    #ifndef	DEBUG
    	clnt = clnt_create (host, CALCUL, VERSION_UN, "udp");
    	if (clnt == NULL) {
    		clnt_pcreateerror (host);
    		exit (1);
    	}
    #endif	/* DEBUG */
     
    	result_1 = calcul_null_1((void*)&calcul_null_1_arg, clnt);
    	if (result_1 == (void *) NULL) {
    		clnt_perror (clnt, "call failed");
    	}
    	result_2 = calcul_facto_1(&calcul_facto_1_arg, clnt);
    	if (result_2 == (int *) NULL) {
    		clnt_perror (clnt, "call failed");
    	}
    	else
    	{
    	printf("Le resultat du factoriel de %d est: %d",calcul_facto_1_arg, *result_2); 
    	}
    #ifndef	DEBUG
    	clnt_destroy (clnt);
    #endif	 /* DEBUG */
    }
     
     
    int
    main (int argc, char *argv[])
    {
    	char *host;
     
    	if (argc < 2) {
    		printf ("usage: %s server_host\n", argv[0]);
    		exit (1);
    	}
    	host = argv[1];
     
    	printf("Rentrer le nombre entier n pour le calcul du factoriel de n:\n");
    	calcul_facto_1_arg=getch();
     
    	calcul_1 (host);
    exit (0);
    }

  2. #2
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Pourquoi utiliser une fonction non portable quand deux solutions portables sont disponibles ?
    - fgets + strtod
    - scanf


    Quant à ton problème de compilation, il te manque quelque chose du genre
    sur ta ligne de compilation (pour l'édition de lien....)
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 59
    Points : 44
    Points
    44
    Par défaut
    Ok merci. J'essaierai.
    est à insérer dans ma commande de compilation, c'est bien ça?

  4. #4
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Mais je te déconseille d'utiliser la fonction getch qui est un bug utilise plutôt fgets.
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut
    getch n'est en rien un bug: c'est gets qui en est un.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par benjiprog
    Mais je te déconseille d'utiliser la fonction getch qui est un bug utilise plutôt fgets.
    C'est pas (forcément) un bug, c'est juste pas portable...
    Pas de Wi-Fi à la maison : CPL

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 59
    Points : 44
    Points
    44
    Par défaut
    Ok merci à vous. En ce moment j'ai pas le temps de vérifier, mais des que possible, je vous ferais savoir.
    Pour l'instant je met pas encore de balise.

Discussions similaires

  1. [Série] Accès au port série sous linux
    Par ghost dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 10/10/2007, 10h43
  2. Comment désinstaller MySQL sous linux
    Par nahmsath dans le forum Installation
    Réponses: 5
    Dernier message: 18/09/2007, 10h46
  3. getch() sous linux
    Par bobo21 dans le forum C
    Réponses: 9
    Dernier message: 21/11/2005, 15h47
  4. installer jbuilder7 sous linux
    Par rtlinfo34 dans le forum JBuilder
    Réponses: 5
    Dernier message: 30/10/2002, 19h16
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo