Aktualisiere printf-Wert in derselben Zeile statt in einer neuen Zeile

8

Ich würde gerne wissen, ob es einen Weg in C gibt, einen vorhandenen Wert zu überschreiben, der bereits gedruckt wurde, anstatt jedes Mal eine neue Zeile zu erstellen oder sich einfach über ein Leerzeichen zu bewegen. Ich brauche Echtzeitdaten von einem Sensor und möchte, dass er einfach dort sitzt und die bestehenden Werte ohne Scrollen aktualisiert. Ist das möglich?

UPDATE: ADDIERTER CODE

%Vor%     
Yamaha32088 03.03.2013, 23:56
quelle

7 Antworten

1

Sie können so viele Zeilenumbrüche drucken, wie der Konsolenbildschirm hat. Dadurch wird der Bildschirm effektiv gelöscht.

Dies ist ein großartiger Link zum Löschen des Bildschirms auf verschiedene Arten.

    
user1944441 03.03.2013, 23:57
quelle
19

Sie suchen nach einem Wagenrücklauf. In C ist das \r . Dies bringt den Cursor zurück zum Anfang der aktuellen Zeile, ohne eine neue Zeile zu beginnen (Zeilenvorschub)

    
Yaniv 03.03.2013 23:59
quelle
11

Sie sollten \r zu Ihrem printf hinzufügen, wie andere gesagt haben. Stellen Sie außerdem sicher, dass Sie stdout spülen, da der stdout-Stream gepuffert ist & amp; zeigt nur an, was sich im Puffer befindet, nachdem es eine neue Zeile erreicht hat.

In Ihrem Fall:

%Vor%     
Zaxter 10.06.2015 09:12
quelle
4

Sie können dies tun, indem Sie "\ r" anstelle von "\ n" verwenden.

    
Gorbag 04.03.2013 00:01
quelle
2

Wo gedruckt?

Wenn Sie Daten an die Standardausgabe ausgeben, können Sie normalerweise nichts zurückholen, was bereits geschrieben wurde. Wenn Ihre Standardausgabe an Terminal gerichtet ist, können Sie versuchen, \r -Zeichen auszugeben, das den Cursor an einigen Terminals an den Anfang der Zeile bewegt (der Effekt ist plattformabhängig), so dass die nachfolgende Ausgabezeile überschreibt, was war zuvor in dieser Zeile gedruckt. Dies wird einen visuellen Effekt von alten Daten erzeugen, die durch neue Daten ersetzt werden. Dies ersetzt jedoch nicht wirklich die alten Daten im Stream. Wenn Sie also die Standardausgabe in eine Datei umleiten, speichert die Datei alles, was gedruckt wurde. Denken Sie daran, dass \r Sie zwingt, die gesamte Zeile auf dem Terminal zu überschreiben.

Wenn Sie Ihre Daten in eine Datei ausgeben, können Sie fseek function verwenden, um zu einem zuvor besuchten Punkt zurückzukehren und von dort aus von vorne zu beginnen und dabei die Daten zu überschreiben.

    
AnT 04.03.2013 00:03
quelle
1

Haben Sie das Zeichen '\ b' (Rücktaste) getestet? Funktioniert möglicherweise abhängig von Ihrer Konsole.

    
Josh Petitt 03.03.2013 23:59
quelle
0

Beachten Sie den Beispielcode, um Folgendes zu verstehen:

%Vor%

Referenz-Blog

    
parasrish 07.09.2015 10:27
quelle

Tags und Links