simulation de touches - C - Programmation
Marsh Posté le 22-01-2010 à 16:37:09
alors première remarque : en C, on évite d'utiliser des chaines pour faire des énumérations. Vraisemblablement, ton mode devrait probablement plutôt être un enum.
Ensuite, il n'y a aucun problème à construire ta chaine avant de la sortir via une combo de snprintf et de puts
l'opérateur ternaire est sympa, mais je pense que, dans ton cas, tu aurais plutôt intérêt à faire un truc du style.
Si tu veux effectivezment afficher le prénom et que l'utilisateur puisse le remplacer (en pressant backspace pour effacer l'entrée), alors tu vas devoir utiliser quelque chose de plus élaboré que ca. Je te rappelle que le standard C ne connait pas de console directement et que rien ne te garantit que ta sortie n'est pas redirigée dans un fichier.
Cela dit, tu peux toujours regarder du côté des ncurses, tu auras peut-être des fonctions qui répondront mieux à tes attentes
Marsh Posté le 22-01-2010 à 17:58:02
theshockwave a écrit : alors première remarque : en C, on évite d'utiliser des chaines pour faire des énumérations. Vraisemblablement, ton mode devrait probablement plutôt être un enum. Ensuite, il n'y a aucun problème à construire ta chaine avant de la sortir via une combo de snprintf et de puts l'opérateur ternaire est sympa, mais je pense que, dans ton cas, tu aurais plutôt intérêt à faire un truc du style. |
Merci de m'avoir confirmé qu'une composition de sprintf le tout dans puts n'est pas du tout louche
theshockwave a écrit :
Cela dit, tu peux toujours regarder du côté des ncurses, tu auras peut-être des fonctions qui répondront mieux à tes attentes |
En fait,"Jacques" est modifiable, après un backspace, seul "s" est ôtée, et si l'on appuie sur Entrée, "Jacque" est envoyé au buffer. une idée ? Sinon je vais voir du côté de ncurses.
Marsh Posté le 23-01-2010 à 23:42:27
Nethacker a écrit : |
Je ne connais pas de lib qui fasse ca (ca ne veut pas dire qu'il n'y en a pas, c'est juste que, personnellement, le mode terminal/console, je n'y touche pas trop) mais à refaire à la mano, ca doit pas être la mer à boire non plus. Juste lire les entrées caractère par caractère et gérer leur impact sur ta chaine modifiable en interne, raffraichissant juste la modif. A nouveau, pour faire ca, les curses/ncurses devraient te fournir ce dont tu as besoin pour le mettre en place.
Marsh Posté le 24-01-2010 à 15:07:20
Regarde la lib de GNU qui gère l'historique (readline si j'ai bonne mémoire) et ses équivalents ailleurs (il y en a au moins une sous license BSD).
Marsh Posté le 21-01-2010 à 20:13:38
Bonjour,
J'ai un fichier avec des données, qui à l'ouverture du programme sont stockés dans un tableau de structures, dymanique biensûr
Dans mon menu j'ai l'option "Modifier", là encore j'ai pas envie de mettre un autre menu pour choisir quelle "proprieté / attribut" modifier, donc j'ai une boucle qui passe sur tous les attributs et on peut entrer les nouvelles informations.
Or on veut pas forcément tout supprimer, j'ai pensé au début à un truc du style clients ftp/ssh
Entrez le prénom (Jacques) :
Si l'on entre quelque chose la valeur précedente est écrasée sinon elle est gardée.
Mais trop de problèmes avec C qui n'aime pas la concaténation de caractères/chaines et qui ne me laisse pas mettre les paranthèses :
printf("Entrez un prénom %s",!strcmp(mode,"modifier" ) ? "stagiaires[i].prenom" : "" );
impossible de mettre les paranthèses à moins de les ajouter manuellement avec davantages d'instructions et de conditions une/paranthèse.
J'ai donc repensé et imaginé comme suit :
Entrez un prénom : Jacques
Sachant que Jacques est modifiable, que l'utilisateur peut la supprimer ou juste taper entrée pour qu'elle constitue le "stdin' prochain.
Comment aboutir à cela ? Des simulations de touches en parcourant toute la chaine ? ou y'a un moyen plus facile ?
Illuminez mes idées merci d'avance.
Message édité par Nethacker le 22-01-2010 à 02:57:28