に私はUbuntuのの.soでのgccを使用しています、私はコンパイルしターミナルで実行されます。しかし、オンラインプログラミングコンテストでは、図に示すような出力が必要です。そのためにどのように私はgotoxy達成できる()のgcc
私はTURBOCを使用している場合、私は、出力のスパイラル形式を取得するためにgotoxy()を使用してconio.hを使用してそれを得ることができます。 しかし、Ubuntuでは、どうやってこれを達成できますか?
に私はUbuntuのの.soでのgccを使用しています、私はコンパイルしターミナルで実行されます。しかし、オンラインプログラミングコンテストでは、図に示すような出力が必要です。そのためにどのように私はgotoxy達成できる()のgcc
私はTURBOCを使用している場合、私は、出力のスパイラル形式を取得するためにgotoxy()を使用してconio.hを使用してそれを得ることができます。 しかし、Ubuntuでは、どうやってこれを達成できますか?
ncursesライブラリを使用します。ここで
はhttp://www.paulgriffiths.net/program/c/srcs/curhellosrc.html
#include <stdlib.h>
#include <stdio.h>
#include <curses.h>
int main(void) {
WINDOW * mainwin;
/* Initialize ncurses */
if ((mainwin = initscr()) == NULL) {
fprintf(stderr, "Error initialising ncurses.\n");
exit(EXIT_FAILURE);
}
move(10, 15);
addch('X');
refresh();
getch();
delwin(mainwin);
endwin();
refresh();
return EXIT_SUCCESS;
}
さらに情報から適応、例ですここに提供されています:http://invisible-island.net/ncurses/ncurses-intro.html#stdscr
ANSI escape sequencesのさておき、あなたはncursesベースを調査したいかもしれません:
それはすべて、最終的にはプログラムではなく、実際のホスト、言語、またはライブラリを実行している端末の能力に依存します。プログラムの出力をファイルまたはプリンタにリダイレクトするとどうなるか考えてみてください。
conio.h
APIは固定コンソールと関連していますが、Unixのようなシステムでは通常、サイズ変更可能なX端末などの端末を扱うことができます。
はあなたが必要とするどのように多くの出力の行を決定します。 "char *"の配列を、1行の出力を必要とする1つのエントリに割り当てます。数値を配置するときには、行のサイズを増やすために「realloc()」を使用し、必要に応じて、古い端から新しい端までスペースで埋めてください。その行の正しい場所(メモリ内)に番号を入力します。
メモリに文字列の配列を作成した後、各行を出力するforループを実行します(割り当てられたメモリが解放されます)。
カーソル位置を制御するために「gotoxy()」やその他のものは必要ありません。
これはコンテストであり、ncursesのような依存関係を望まないと仮定すると、メモリ内でそれを実行しようとする可能性があります。
文字列と列の2次元配列を設定します(例:24x80)。適切なセルに値を割り当てる独自のバージョンのgotoxy()
を書きます。プロットが終了したら、行の配列を出力します。
ここにはまだ書かれていないので、私は、ANSIエスケープシーケンスを使用している例について、Steve-oとして説明したいと思います。
void gotoxy(int x, int y)
{
printf("%c[%d;%df", 0x1B, y, x);
}
私はhereからそれを得ました。
0x1B
は、10進数で27の16進数で、ESCのASCIIです。エスケープシーケンスはそれから始まります
%m;%nf
カーソルを行n、列mに移動します。
ANSIエスケープシーケンスが「to control the formatting, color, and other output options on video text terminals」
を使用している私は、上から、すなわち左から右への数字の順番、(あなたは、各番号がどこに行く事前に把握することになっていると思います-bottom、およびその間のスペースの数)を入力し、そのテキストをすべて出力します。 「画面上のこの場所に移動して数字を書いてください」という質問だけだったら**興味深い質問ではありません**;プログラミングコンテストは基本的には実装ではなくデザインに関するものです。 –