2014-10-17 30 views
5

Hier habe ich ein sehr einfaches Programm:Wie positioniere ich den Eingabetextcursor in C?

printf("Enter your number in the box below\n"); 
scanf("%d",&number); 

Nun würde ich die Ausgabe mag so aussehen:

Enter your number in the box below 
+-----------------+ 
| |*|    | 
+-----------------+ 

Wo, | * | ist der blinkende Cursor, an dem der Benutzer seinen Wert eingibt.

Da C ein linearer Code ist, wird das Box-Art nicht gedruckt, dann nach der Ausgabe gefragt, es wird die obere Zeile und die linke Spalte gedruckt, dann nach der Eingabe die untere Zeile und die rechte Spalte drucken.

Also, meine Frage ist, könnte ich möglicherweise zuerst die Box drucken, dann eine Funktion haben, den Cursor zurück in die Box zu nehmen?

+0

vielleicht 'Gotoxy()'? –

+0

@SouravGhosh In Ordnung, Hat das eine relative Verschiebung statt eine absolute? –

+1

Dies ist im Standard C99 nicht möglich. Auf einigen Betriebssystemen könnten Sie einige Bibliotheken wie [ncurses] (http://www.gnu.org/software/ncurses/) oder [readline] (http://www.gnu.org/software/readline) –

Antwort

13

Wenn Sie unter einem Unix-Terminal sind (xterm, gnome-terminal ...), können Sie Konsolencodes verwenden:

#include <stdio.h> 

#define clear() printf("\033[H\033[J") 
#define gotoxy(x,y) printf("\033[%d;%dH", (x), (y)) 

int main(void) 
{ 
    int number; 

    clear(); 
    printf(
     "Enter your number in the box below\n" 
     "+-----------------+\n" 
     "|     |\n" 
     "+-----------------+\n" 
    ); 
    gotoxy(3, 2); 
    scanf("%d", &number); 
    return 0; 
} 

Oder mit Box-drawing characters:

printf(
    "Enter your number in the box below\n" 
    "╔═════════════════╗\n" 
    "║     ║\n" 
    "╚═════════════════╝\n" 
); 

Weitere Informationen:

man console_codes 
2

Die C-Sprache selbst hat keine Vorstellung von einem Bildschirm mit einem Cursor. Sie müssen eine Art von Bibliothek verwenden, die diese Unterstützung bietet. ist die bekannteste und am weitesten verbreitete Bibliothek für die Terminalsteuerung.

6

im Linux-Terminal Sie verwenden Terminal kann Befehle Sie den Cursor, wie

printf("\033[8;5Hhello"); // Move to (8, 5) and output hello

andere ähnliche Befehle verschieben:

printf("\033[XA"); // Move up X lines; 
printf("\033[XB"); // Move down X lines; 
printf("\033[XC"); // Move right X column; 
printf("\033[XD"); // Move left X column; 
printf("\033[2J"); // Clear screen 

Denken Sie daran, dass dies nicht eine standardisierte Lösung ist und daher ist Ihr Code nicht plattformunabhängig.

+0

verwenden +1 Das war eine großartige Antwort, es ging darüber hinaus, indem es auch andere Befehle erklärte, die den Cursor ändern könnten. Ich denke, das sollte die Antwort sein, denn wie schnell und kurz, aber nützlich war es. –

Verwandte Themen