[C] clear line (Win/Linux)

Fragen zu allen anderen Programmiersprachen.
pyromane
Beiträge: 276
Registriert: 09.09.2010 14:10

[C] clear line (Win/Linux)

Beitrag von pyromane »

Hallo,
ich bin nun dabei etwas c zu lernen. Ich möchte gerne den Status einer Berechnung ausgeben (nicht in %). Wenn ich jedoch:

Code: Alles auswählen

printf("Status: %d\n", progress);

ausgebe kommt jedes mal eine neue Zeile dazu. Das ist natürlich bei langen Berechnungen sehr doof da dies vollkommen überflüssig ist.

Ich habe nun folgendes gemacht:

Code: Alles auswählen

 printf("\r Status: %d", progress);
fflush(stdout);
so funktioniert es auch unter Linux. Allerdings gibt es ein Problem. Unter Linux passiert folgendes:

Nehmen wir an ich sage erst der Status liegt bei 10 und dann sage ich er liegt doch bei 9 also folgendes:

Code: Alles auswählen

Status: 10
//Dann kommt hier aber:
Status 90
da er zwar bis zum Anfang der Zeile geht aber nicht die Zeile löscht sondern einfach überschreibt.

Nun suche ich nach einer Lösung die für Windows und Linux (Debian 5.0 / Ubuntu) klappt.

Ich bedanke mich schon einmal bei euch.

pyromane
PureBasic 5.21 LTS auf Windows 7 x64 (Intel i5 2500K, 8GB Ram, Nvidia GTX 780)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: [C] clear line (Win/Linux)

Beitrag von NicTheQuick »

Häng noch ein Leerzeichen an, das die '0' von '10' dann überschreibt. Anders geht's nicht und so mache ich das dann auch immer. ;)
pyromane
Beiträge: 276
Registriert: 09.09.2010 14:10

Re: [C] clear line (Win/Linux)

Beitrag von pyromane »

Genau das habe ich schon probiert... Wenn dann müsste ich den Unterschied anschauen zwischen alter Ausgabe und neuer Ausgabe und dann die Anzahl an Leerzeichen nehmen... Wäre eine Möglichkeit. Gibt es keine andere? Wundert mich irgendwie, denn das ist ja etwas, was öfters vorkommt.
PureBasic 5.21 LTS auf Windows 7 x64 (Intel i5 2500K, 8GB Ram, Nvidia GTX 780)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: [C] clear line (Win/Linux)

Beitrag von DarkDragon »

Du könntest die Ausgabe auf der Konsole leeren und neu draufschreiben:
http://stackoverflow.com/questions/2286 ... ux-using-c
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
pyromane
Beiträge: 276
Registriert: 09.09.2010 14:10

Re: [C] clear line (Win/Linux)

Beitrag von pyromane »

Ja nur dann verschwindet ja alles was vorher war...
PureBasic 5.21 LTS auf Windows 7 x64 (Intel i5 2500K, 8GB Ram, Nvidia GTX 780)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: [C] clear line (Win/Linux)

Beitrag von DarkDragon »

Und dann gibt es natürlich noch ncurses, aber ob es dafür bereits eine PB Anbindung gibt glaube ich nicht.

[EDIT]
So kann man sich irren:
http://forums.purebasic.com/german/view ... 17&start=0
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
pyromane
Beiträge: 276
Registriert: 09.09.2010 14:10

Re: [C] clear line (Win/Linux)

Beitrag von pyromane »

Wie gesagt ich will das ganze ja in C machen und nicht in PB...
PureBasic 5.21 LTS auf Windows 7 x64 (Intel i5 2500K, 8GB Ram, Nvidia GTX 780)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: [C] clear line (Win/Linux)

Beitrag von DarkDragon »

pyromane hat geschrieben:Wie gesagt ich will das ganze ja in C machen und nicht in PB...
Stimmt, dann kannst ja PDCurses verwenden (Funktioniert unter Windows auch).
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten