Ich möchte die Sekunden in Echtzeit seit dem Programmstart gedruckt drucken. Zuerst ist der Ausgang "0". Nach einer Sekunde wird die "0" durch "1" ersetzt, und so weiter. Hier ist der Code, den ich ursprünglich geschrieben habe.Drucken, verzögern und löschen Sie die aktuelle Zeile in C
#include<stdio.h>
#include<time.h>
void main()
{
long int time;
printf("Hello, let us measure the time!\n");
time=clock();
printf("%ld", 0);
while(time/CLOCKS_PER_SEC<7)
{
time=clock();
if(time%CLOCKS_PER_SEC==0)
{
printf("\r");
printf("%ld", time/CLOCKS_PER_SEC);
}
}
}
Dies ergab einen Ausgang "7" am Ende von nur 7 Sekunden.
Wenn ich die folgenden Ersetzungen mache, funktioniert der Code gut.
printf("%ld", 0);
von
printf("%ld\n", 0);
und
printf("\r");
printf("%ld", time/CLOCKS_PER_SEC);
von
printf("\33[A"); //vt100 char, moves cursor up
printf("\33[2K"); //vt100 char, erases current line
printf("%ld\n", time/CLOCKS_PER_SEC);
Das Problem scheint, dass der Ausgang wird nicht, bis die aktuelle Zeile vollständig bestimmt wird gesendet. Was passiert hier?
Ich benutze GCC-Compiler auf Ubuntu.
'fflush (stdout);' – hyde