J'écris un simple client de messagerie instantanée dans c. Cela fonctionne actuellement bien, cependant si un utilisateur tape et reçoit un message en tapant, le message affiche AFTER le texte, alors l'utilisateur continue sur la ligne ci-dessous. Il ressemblerait à ceci:Comment conserver STDIN en bas du terminal dans C
UTILISATEUR: Je suis en train de ty ... AMI: Bonjour
pe un message. < --- (la fin des utilisateurs un message)
Mon idée est:
forcer une certaine façon les données actuelles de stdin et le charger dans un tampon, puis utilisez un \ r avant d'imprimer AMI: à effacer ce qui est sur la ligne, puis imprimer à partir du tampon. Quelqu'un at-il des exemples concrets de la façon d'accomplir cette tâche?
Le résultat final devrait être
AMI: Bonjour
UTILISATEUR: Je suis en train de taper un message
L'utilisateur a commencé à taper le message, a reçu un message, le stdin ligne a été décalée vers le bas, puis l'utilisateur a terminé leur message.
Note: Je suis sous GNOME Terminal 3.6.2 sur la dernière version de Linux Mint
Vous pouvez en savoir plus sur [la bibliothèque ncurses] (https: //en.wikipedia. org/wiki/Ncurses), ou sur l'utilisation de [codes de contrôle VT100] (http://www.termsys.demon.co.uk/vtansi.htm) pour placer le curseur sur la position. –
Il n'y a aucun moyen de faire cela avec le standard pur C. C ne reconnaît même pas la présence d'un terminal ou même d'un écran d'ordinateur: il ne concerne que les flux d'entrée et de sortie. – Lundin