Interview Questions

ow can I display a percentage-done indication that updates itself in place, or show one of those twirling baton progress indicators?

C Interview Questions and Answers


(Continued from previous question...)

ow can I display a percentage-done indication that updates itself in place, or show one of those twirling baton progress indicators?

These simple things, at least, you can do fairly portably. Printing the character '\r' will usually give you a carriage return without a line feed, so that you can overwrite the current line. The character '\b' is a backspace, and will usually move the cursor one position to the left.
Using these characters, you can print a percentage-done indicator:
for(i = 0; i < lotsa; i++) {
printf("\r%3d%%", (int)(100L * i / lotsa));
fflush(stdout);
do_timeconsuming_work();
}
printf("\ndone.\n");

or a baton:
printf("working: ");
for(i = 0; i < lotsa; i++) {
printf("%c\b", "|/-\\"[i%4]);
fflush(stdout);
do_timeconsuming_work();
}
printf("done.\n");

(Continued on next question...)

Other Interview Questions