Public Group

Archived

This topic is now archived and is closed to further replies.

C Question

This topic is 5245 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

How do you display text in the center of the screen using printf?

Share on other sites
you could:
use strlen() to obtain the length of the string. taken you know the width of the screen (in characters. usually 85 I think), you can calculate the number of whitespaces before the text to center it on screen.

you could then, either add whitespaces to your string (or a new string) and print them, or
depending on what platform you're developing on, set the position of the text manually.
in good old c/c++ you had gotoXY(), but in for example Visual C++ this is removed..
In windows, everything is a window .. so you'll have to use some windows function to set the position.
Here are some wrapper functions I wrote way back:
void setXY( COORD coords) {	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coords);}COORD getXY() {	CONSOLE_SCREEN_BUFFER_INFO tempInfo;	GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &tempInfo);	return tempInfo.dwCursorPosition;}

[edited by - BiTwhise on January 13, 2004 2:20:02 PM]

Share on other sites
assuming that the string you are printing is less than the width of the screen:

#define SCREEN_WIDTH 80 /* change if not correct */

f(char *p)
{
char buf[SCREEN_WIDTH+1] = "\0";
int i, n, half_n, width_half;
n = strlen(p);
half_n = n / 2;
width_half = SCREEN_WIDTH / 2;
for (i = 0; i < width_half - half_n; i++)
buf = '' '';
buf[i] = ''\0'';
strcat(buf, p);
printf("%s\n", p);
}

I didn''t test this code, but something like this should work

• 40
• 15
• 10
• 23
• 19