2008-09-11 4 views
2

Ich habe eine kleine Routine, die unter Linux und Windows in C geschrieben und zeigt die Ausgabe auf der Konsole. Ich verbinde keine Art von Flüchen oder so etwas.Zurücksetzen Bildschirmpunkt an den oberen Rand des Bildschirms in Windows & Linux-Konsole

Aktuell lösche ich den Bildschirm

#ifdef __WIN32 
    system("cls"); 
#else 
    system("clear"); 
#endif 

Dann ich mit einem Bündel von printf Aussagen haben den Status zu aktualisieren. Was ich möchte nur den Screenpointer auf 0,0 zurücksetzen, so kann ich dann nur meine printfs überlagern. Ich würde es eher vermeiden, weitere Erweiterungen zu kompilieren, zumal ich für 2 verschiedene Betriebssysteme kodiere.

Antwort

0

Sieht aus wie ich SetConsoleCursorPosition

Ansi Escape-Sequenz \ 033 [0 ein Fenster spezifische Art und Weise, es zu tun gefunden haben; 0H für Linux - nur printf, dass an die Konsole.

+1

Die Ansi Escape ist nicht für Linux garantiert, in der kleinen Chance, die ein anderer Terminal-Typ verwendet wird. Möglicherweise möchten Sie die Funktion in Termcap oder Terminfo überprüfen. –

1

Für Unix-ähnliche Plattformen verwenden Sie normalerweise die curses-Bibliothek.

0

Ja, für Unix-Plattformen, Flüche (oder Ncurses, diese Tage) ist der Weg zu gehen. Und es gibt Versionen, die unter Windows funktionieren, also könnte man es auf beiden Systemen genauso machen.

0

Für Windows - Sie können ANSI-Escape-Zeichen verwenden.

http://www.lexipixel.com/news/star_dot_star/using_ansi_escape_sequences.htm

http://www.robvanderwoude.com/ansi.html

printf "\x[0;0H" 

Früher war es so, dass ansi.sys geladen werden musste, bevor Sie dies tun könnte, aber es ist einen Versuch wert.

Anweisungen zum Hinzufügen von ANSI-Unterstützung http://www.windowsnetworking.com/kbase/WindowsTips/WindowsXP/UserTips/CommandPrompt/CommandInterpreterAnsiSupport.html Hinweis: dass Ansi.sys nur unter command.com funktioniert. Sie können es nicht mit cmd.exe verwenden

Verwandte Themen