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 :

fgets : mettre une valeur par défaut


Sujet :

C

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 850
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 850
    Par défaut fgets : mettre une valeur par défaut
    bonjour,

    j'utilise fgets pour récupérer une chaine tapée dans une console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    printf("Entrez votre valeur : ");
    fgets(butTmp, 10, stdin);
    => comment faut-il faire pour définir une valeUr par défaut ?
    ex : je veux que ça m'affiche "Entrez votre valeur : <valeur_par_defaut>" et que je puisse valider ou modifier cette valeur.


    je pensais faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    char DefVal[] = "<valeur_par_defaut>";
    printf("Entrez votre valeur : %s", DefVal);
    strcpy(stdin, DefVal);
    fgets(butTmp, 10, stdin);
    => mais ça ne fonctionne pas ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Salut,

    si l'utilisateur n'a rien tapé (juste entrée), alors ton buffer est vide (tu peux affiner en checkant qu'il ne contient que des caractères d'espaces ... cf isspace). S'il est vide alors tu y copie la valeur par défaut.

    -> attention aux tailles ...

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    1 850
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 850
    Par défaut
    bonjour,

    mais le problème est que je voudrais que la valeur soit affichée et qu'on puisse l'effacer (en entier ou partiellement) via la touche backspace.

  4. #4
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Dans ce cas c'est plus compliqué et tu ne pourras utiliser fgets. Il faut utiliser des fonctions de gestion de terminal pour lire chaque caractère tapé et gérer toi-même le backspace les touches curseurs, ignorer les touches de fonctions, ... C'est faisable.
    Éventuellement il y a des bibliothèques pour ça (curses ou readline et cie dans le monde unix, certainement autre chose dans le monde windows). Ça va fortement dépendre de ton architecture.

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/10/2009, 09h06
  2. Mettre une valeur par défaut dans un input type='file'
    Par fab76000 dans le forum Langage
    Réponses: 2
    Dernier message: 27/01/2009, 19h59
  3. Réponses: 10
    Dernier message: 04/11/2008, 14h30
  4. Réponses: 4
    Dernier message: 05/06/2007, 09h16
  5. mettre une valeur par défaut
    Par oolon dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 17h20

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