prev up next   top/contents search

comp.lang.c FAQ list · Question 19.3

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


A: 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");

See also question 12.4.

References: ISO Sec. 5.2.2


prev up next   contents search
about this FAQ list   about eskimo   search   feedback   copyright

Hosted by Eskimo North