2010-05-24 13 views
3

Je crée un interpréteur pour mon esolang, et j'ai besoin que l'utilisateur entre un texte qui sera ensuite interprété comme un programme INTERCAL. Je veux que l'utilisateur d'entrer du texte, qui peut contenir tout caractère comprenant des sauts de ligne, jusqu'à ce que l'utilisateur appuie^X (Ctrl-X), comme ceci:Comment lire l'entrée jusqu'à ce que l'utilisateur entre^X

Enter your code followed by ^X: 
Bla 
Blablabla 
Bla^X 
Thank you for entering your code 

(ligne 2, 3 et 4 ont été saisies par l'utilisateur Quelqu'un peut-il m'expliquer comment je peux lire l'entrée, y compris les nouvelles lignes jusqu'à ce que l'utilisateur entre^X? Merci

+0

^X aura une valeur de caractère de 24 si cela aide. –

Répondre

1

^X a le code ASCII 24, essayez de vérifier cela.

http://www.unix-manuals.com/refs/misc/ascii-table.html

+0

Donc, est-ce que je devrais faire quelque chose comme une boucle do-while qui lit l'entrée caractère par caractère et vérifie si^X n'est pas entré? –

+0

Oui, cela fonctionnerait. –

1

Il serait préférable de demander à l'utilisateur d'utiliser^D.
Sur la plupart des systèmes, cela produit le caractère EOF et provoque la fermeture du flux.

Ainsi, vous n'avez rien de spécial à faire.
Vous venez de lire jusqu'à la fin du flux d'entrée. Ainsi, votre code peut être exactement le même pour lire une entrée standard et lire un fichier.

+0

^D n'est pas ma question. De plus,^D n'est aucunement impliqué dans HQ9 + -ABC –