- 締切済み
出力について(初心者です)
Borland のTurbC++をつかっています。 C言語であるプログラムを書いて、その結果をプレゼンテーションで使うことに なりました。 プログラムを実行するとそのまま画面に結果が表示されるようにしたいのですが、 可能でしょうか? 今では実行すると、.exeファイルに格納され、そのファイルをまた実行しないと、表示されず、スクロールもできません。 何か方法がありますでしょうか?よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- leaz024
- ベストアンサー率75% (398/526)
sssohei さんの言う通り、表示用のプログラムを書くのがよいと思います。 例えば次のようなプログラム(line.c)をコンパイルしておき、「実行ファイル | line」とすればOKです。 #include <stdio.h> #include <conio.h> /* ※1 */ int main(int argc, char **argv) /* ※3 */ { char str[256]; /* ※2 */ int cnt = 0, i; if (argc >= 2) sscanf(argv[1], "%d", &cnt); /* ※3 */ if (cnt == 0) cnt = 1; while (1) { for (i = 1; i <= cnt; i++) { /* ※3 */ if (gets(str) == NULL) goto END; puts(str); } (void)getch(); /* ※1 */ } END: return 0; } ※1.「実行ファイル | line」のようにパイプを使うと、line.exe 内の標準入力関数(stdio.h の関数)では、キー入力を読めなくなってしまいます。 (その代わり、「実行ファイル」の出力が読み込まれます。) なので、コンソール入力関数(conio.h の関数)を使っています。 (これならキー入力が読めます。) ※2.「実行ファイル」が出力する、最長の行の長さよりも大きく設定して下さい。 ※3.line.exe にパラメータを渡すことで、1度に出力する行数を設定できます。 3行ずつ出力する場合は、「実行ファイル | line 3」のようにして下さい。 不明な点がありましたら、補足をお願いします。
- sssohei
- ベストアンサー率33% (33/98)
久しくDOSプロンプトを使用していなかったので、記憶が違ったようです。申し訳ありません^^; >WinNT系のコマンドプロンプトだとスクロール出来るんです、、言い訳ですが。 more コマンドで「続く」がでるのは消しようがないです。 表示用のプログラムを書くか、テキストファイルに書き出して、エディタで表示するかぐらいしか残念ながら思いつきません。 後者は xxx.exe > out.txt としてやれば out.txt に実行結果を書き出せるので、そのテキストファイルをエディタで表示する。と言う物です。 前者なのですが、「1行ずつ順に表示させる方法」を実装してやって、画面の行数分表示というのはいかがでしょうか? 長くなりそうなので、プログラムは書きませんが、分からなければ、補足をお願いします。 なお、 xxx.exe | out.exe の様にすれば、out.exeの方の標準入力(stdin)にxxx.outの出力(stdout)が得られます。
- LemonT
- ベストアンサー率49% (39/79)
こんばんは。 DOSプロンプト上で、 > 実行ファイル |more とすると、任意のキーを押すことにより1頁分づつ進んで表示します。
- sssohei
- ベストアンサー率33% (33/98)
> 今では実行すると、.exeファイルに格納され 実行可能ファイル(exeファイル)が生成されると言うべきです。 C言語で書かれたソースをコンパイラが機械語のファイルに変換します。その変換結果が実行可能ファイルですので あらかじめ、複数の実行可能ファイルを用意しておくのじゃ駄目なんでしょうか? >表示されず、スクロール どんな環境でプレゼンテーションするんでしょうか? パソコンの画面を単に出力するのでしょうか? Windowsなのだったら、DOSプロンプト(Win9X)かコマンドプロンプト(WinNT系)で実行したらうまく行きませんか? はずしてたら補足をお願いします。
補足
ご指摘、アドバイスありがとうございました。 >どんな環境でプレゼンテーションするんでしょうか? まず、ソースをざっと見せて、その場でプログラムを実行させ、 その結果を表示したいと思っています。 DOSプロンプトで実行してみましたが、行数が足りず、 結果が(34行)すべて表示することができないのですが、 これを解決する方法はありますでしょうか? 例えば あ・・・ い・・・ う・・・ ・・・ というように文字列を34行表示したいです。よろしくお願いします。
補足
ありがとうございました。 実行してみたところ、1ページ分ずつ表示されましたが、 「続く」という文字も表示されてしまいます。 この文字を消すことはできないのでしょうか? あと、文字列を表示する際に、 1行ずつ順に表示させる方法がありましたら、教えてください。