C言語で、画面の中央に文字列を表示する場合は、どうしたらいいですか??
お願いします。
教えてください
- bitter_fox
- 記事: 607
- 登録日時: 13年前
- 住所: 大阪府
Re: 教えてください
画面の中央ってど真ん中ということでよろしいですね?みやび さんが書きました:C言語で、画面の中央に文字列を表示する場合は、どうしたらいいですか??
お願いします。
コンソールAPIを使うのが一般的でしょう。
#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main()
{
HANDLE hStdout; // コンソール出力のハンドル
CONSOLE_SCREEN_BUFFER_INFO cinf; // コンソールスクリーン情報
COORD dwPos; // 位置情報
char *str = "HelloWorld"; // 出力文字列
int counter; // カウンタ
hStdout = GetStdHandle(STD_OUTPUT_HANDLE); // コンソール出力のハンドル
GetConsoleScreenBufferInfo(hStdout, &cinf); // コンソールスクリーン情報を取得する
dwPos.X = (cinf.dwSize.X - strlen(str)) / 2; // 横の最大文字列から出力文字列を引いて二で割るとX軸は中央になる。
dwPos.Y = cinf.dwCursorPosition.Y + (cinf.srWindow.Bottom-cinf.srWindow.Top) / 2;
// ↑現在のカーソルの位置(Y軸) ↑ウィンドウの一番下の位置から一番上の位置を引けばウィンドウのY軸方向の幅が出る
// それを2で割ると中央の位置が出る。
if (!SetConsoleCursorPosition(hStdout, dwPos)) // カーソルの位置を設定する
{
return -1;
}
WriteConsole(hStdout, "HelloWorld", strlen("HelloWorld"), NULL, NULL); // 文字列を出力する。
for (counter = (cinf.srWindow.Bottom - cinf.srWindow.Top) / 2; counter > 0; counter--)
{// ↑あと半分を改行で埋める。
printf("\n");
}
getchar();
return 0;
}
コメントを整えました。
[修正・追記]
mainが戻り値を返してなかったので修正
一文字を受け取ってから終了するように変更
[補足]
一個目の方法だと、コマンドプロンプトのカーソルが一番下とかにいてるとカーソルの位置を設定できないので何も表示されずに終了してしまします。
[hr][追記]
もうちょっと簡単にできるので追記。
#include <windows.h>
#include <stdio.h>
#include <conio.h>
int main()
{
HANDLE hStdout; // コンソール出力のハンドル
CONSOLE_SCREEN_BUFFER_INFO csbi; // コンソールスクリーン情報
int counter; // カウンタ
char *str = "HelloWorld"; // 出力文字列
hStdout = GetStdHandle(STD_OUTPUT_HANDLE); // コンソール出力のハンドル
GetConsoleScreenBufferInfo(hStdout, &csbi); // コンソールスクリーン情報を取得する
for (counter = 0; counter < csbi.srWindow.Bottom - csbi.srWindow.Top; counter++) // 画面下まで改行
{
if (counter == (csbi.srWindow.Bottom - csbi.srWindow.Top) / 2) // ちょうど画面の半分に来たら
{
printf("%*s%s", (csbi.dwSize.X - strlen(str)) / 2, "", str); // X軸の半分になるように出力
}
printf("\n");
}
getchar();
return 0;
}
最後に編集したユーザー bitter_fox on 2010年12月29日(水) 18:25 [ 編集 2 回目 ]
Re: 教えてください
環境を教えてください。
フォーラムルールもお読みください。
http://homepage3.nifty.com/aokura/の
「C言語を始めよう! 1.1.2.2」に文字列をウィンドウの中央に表示するプログラムが付いてきます。
「ひな形>サンプル(Windows)」です。
そのソースを乗せようとしたら「禁止されている単語が見つかりました」だそうなので...
フォーラムルールもお読みください。
http://homepage3.nifty.com/aokura/の
「C言語を始めよう! 1.1.2.2」に文字列をウィンドウの中央に表示するプログラムが付いてきます。
「ひな形>サンプル(Windows)」です。
そのソースを乗せようとしたら「禁止されている単語が見つかりました」だそうなので...
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)