J'ai d'abord écrit un petit programme dans Ansi C sur Windows, et je l'ai compilé sur Ubuntu avec le GCC intégré maintenant.
Le programme est simple:
scanf()
.Mais quelque chose de bizarre se produit. Lorsque j'essaie de déplacer le curseur, il imprime quatre caractères:
^[[A
"^[[B
"^[[C
"^[[D
"Comment éviter cela?
Pourquoi imprime-t-il ces 4 caractères au lieu de déplacer le curseur?
Parce que c'est ce que le clavier envoie réellement au PC (plus précisément, ce que le terminal imprime pour ce qu'il reçoit réellement du clavier). bash
obtient par exemple ces valeurs, les déchiffre et comprend que vous voulez vous déplacer, il déplacera donc le curseur (en cas de gauche/droite) ou utilisera son historique pour récupérer les commandes précédentes (haut/bas) ). Vous ne pouvez donc pas vous attendre à ce que votre programme prenne en charge les touches fléchées comme par magie.
Cependant, la lecture à partir de l'entrée standard du terminal prend déjà en charge les touches fléchées gauche/droite (je crois, mais je ne suis pas sous Linux en ce moment pour tester et m'assurer). Je suppose donc qu'il y a un autre problème qui interfère. Une cause possible pourrait être qu'une de vos touches de modification est bloquée? Peut-être ALT, CTRL ou SUPER?
Pour ceux qui viennent de l'osx (mac) essayez de changer les shells en bash
Terminal -> Preferences -> Shells open with -> [select] Command (complete path)
puis collez
/bin/bash