- ベストアンサー
プログラミングについて
ファイルを読み込んで標準出力し、ファイルの最後になったらプログラムを終了するプログラムを作ったのですが動作の確認ができません。シェルのリダイレクトを使い『& ./a.out < afo.c』というコマンドを入力して確認するみたいなのですが、シェルのリダイレクションのこのコマンドはどのように使ったらいいのですか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.3さんの書かれたEOFを確認するタイミングを 修正すると以下のようになります。 で、コンパイルしてできた実行ファイル名が a.outだとすると a.out < 表示したいファイル名 で目的を達成できると思います。 --------------- test.c -------------------- #include <stdio.h> main() { int c; while((c = getchar()) != EOF){ putchar(c); } return 0; }
その他の回答 (3)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
コンパイルしたプログラムは、a.outなんですよね。 それで #2の補足のプログラムの名前が test.c だとしたら ./a.out < test.c としてみて test.cの内容が、コンソールに出力されるのを確認したらそれでだいたいの動作確認ができたといえると思います。 #2のプログラムでは、 c = getchar(); putchar(c); として、getchar()がEOFを返している可能性があるので、 EOFを検査するタイミングが悪いです。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>ファイルを読み込んで標準出力し、ファイルの最後になったらプログラムを終了するプログラム というプログラムだったら 単に ./a.out とすればいいような気がします。 質問文のコマンドだとファイルを標準入力から読み込んでいるので、作られたプログラムと動作が違うと思います。 多分短いプログラムだと思うので、補足で挙げて下さい。
- utf7
- ベストアンサー率29% (11/37)
カテゴリが「C&C++」となっていますが、Cとシェルのどちらのご質問でしょうか? またファイルを読み込んで~というプログラムを作成されたのは質問者様と書かれていますが、~というコマンドを入力して確認する「みたい」という意味がわかりません。 プログラムをCで作成された場合、 a.out (入力ファイル名) のようにすればいいと思います。a.outはCソースをコンパイルして出来上がったモジュールです。 質問の補足をお願いします。
補足
シェルの質問です。 確認の仕方を聞いたら、~というコマンドを使うということだったので「みたい」と付けました。 コマンドラインにa.out (入力ファイル名)と入力するだけでいいのですか? またOSはUNIXを使っています。
補足
#include <stdio.h> main() { int c; c = ' '; while(c != EOF){ c = getchar(); putchar(c); } return 0; } です。