• ベストアンサー

プログラミングについて

ファイルを読み込んで標準出力し、ファイルの最後になったらプログラムを終了するプログラムを作ったのですが動作の確認ができません。シェルのリダイレクトを使い『& ./a.out < afo.c』というコマンドを入力して確認するみたいなのですが、シェルのリダイレクションのこのコマンドはどのように使ったらいいのですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yasuch
  • ベストアンサー率41% (27/65)
回答No.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)
回答No.3

コンパイルしたプログラムは、a.outなんですよね。 それで #2の補足のプログラムの名前が test.c だとしたら ./a.out < test.c としてみて test.cの内容が、コンソールに出力されるのを確認したらそれでだいたいの動作確認ができたといえると思います。 #2のプログラムでは、 c = getchar(); putchar(c); として、getchar()がEOFを返している可能性があるので、 EOFを検査するタイミングが悪いです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>ファイルを読み込んで標準出力し、ファイルの最後になったらプログラムを終了するプログラム というプログラムだったら 単に ./a.out とすればいいような気がします。 質問文のコマンドだとファイルを標準入力から読み込んでいるので、作られたプログラムと動作が違うと思います。 多分短いプログラムだと思うので、補足で挙げて下さい。

gakuseisan
質問者

補足

#include <stdio.h> main() { int c; c = ' '; while(c != EOF){ c = getchar(); putchar(c); } return 0; } です。

  • utf7
  • ベストアンサー率29% (11/37)
回答No.1

カテゴリが「C&C++」となっていますが、Cとシェルのどちらのご質問でしょうか? またファイルを読み込んで~というプログラムを作成されたのは質問者様と書かれていますが、~というコマンドを入力して確認する「みたい」という意味がわかりません。 プログラムをCで作成された場合、 a.out (入力ファイル名) のようにすればいいと思います。a.outはCソースをコンパイルして出来上がったモジュールです。 質問の補足をお願いします。

gakuseisan
質問者

補足

シェルの質問です。 確認の仕方を聞いたら、~というコマンドを使うということだったので「みたい」と付けました。 コマンドラインにa.out (入力ファイル名)と入力するだけでいいのですか? またOSはUNIXを使っています。

関連するQ&A

  • シェルのリダイレクトとパイプについて

    シェルのリダイレクトとパイプについての質問です. リダイレクトでコマンドの標準出力をファイルに指定した後に, パイプを置いて,もう一つコマンドを並べたとき, 後の方のコマンドの標準入力はどうなるのでしょうか? 例えば, ls >outfile |cat ならば, catの標準入力には,何も入ってこないと思うのですが, これを実行すると,lsの結果がoutfileに書き込まれ, 次のプロンプトが表示されます. 普通,catを引数なしで実行すると, EOFが入力されるまで,入力待ちになると思うのですが, こうならないのは,シェルがcatの標準入力にEOFを入力したからだと 考えていいのでしょうか. よろしくお願いします. (質問の意味が分かりにくければご指摘下さい.)

  • シェルでリダイレクトができない

    bashを使っているのですが、 シェルの中で、 ./実行ファイル hoge1 hoge2 > hoge.txt という感じで二つの引数を使って動作する実行ファイルの標準出力を、リダイレクトしたいです。 ですが、テキストに出力をリダイレクトできません。 こんな感じの書き方でリダイレクトできないもんなんでしょうか? 教えて欲しいです。 よろしくお願いします。

  • Kシェルのリダイレクト

    Kシェルのリダイレクト シェル初心者で申し訳ございませんが、ご教授いただけたら幸いです。 やりたいこと  xxx.kshの実行ログを出力したい。 出力したいログは、以下コマンド実行時に標準出力されるログをファイルへ落としたい。 尚、実際の実行コマンドは、ksh -xは入力しません。 $ ksh -x ./xxx.ksh 上記コマンドを実行すると、詳細なログが表示されるのですが、ファイルへ落としたいと思います。 分かりづらいかも知れませんが、宜しくお願い致します。

  • shell の time コマンドの結果をファイルに出力する方法(AIX)

    AIX4.3 の環境でプログラムのパフォーマンスを確認しようと思っています。「time XXXXX 2> perform.log」で標準エラー出力をファイルに書き出そうとしているのですがうまくいきません。time コマンドのパフォーマンス結果は標準エラー出力に書き出されると思うのですが、リダイレクトしたファイルは何も書かれていません。画面にtime コマンドの結果が表示されるだけです。time コマンドではなく通常のエラーは標準エラー出力からファイルに書き出すことはできます。原因がわからずこまっています。よろしくお願いします。

  • 標準出力とリダイレクトを同時に実行

    標準出力の結果をファイルに保存するにはリダイレクトを使うと思いますが、同時に標準出力にも表示したいです。 同時に、リダイレクトの「>>」のように、追記していくようにしたいです。 そのような場合、 http://blog.goo.ne.jp/minimal_room/e/26b4d965cd67ac5abfc4ca024e69501f によれば、teeコマンドを使うと良いそうなのですが、 ./a.out | tee log.txt のようにすると、標準出力されず、上手くいきませんでした。 どのようなコマンドを打ったら良いか教えて下さい。

  • コマンドラインのログファイルの作成

    Linuxで次のようなプログラムを実現したいのですが どのようにしたらよいでしょうか? (1) シェル起動後、自動的に起動し (2) シェルで入出力されるコマンドラインを指定したファイルに自動的に追加書込みされ * 書込みについては、一行毎に入出力された時刻も同時に書込むものとします 詰まり、次のような記述で、書込みたいのです 入力 時刻 出力 時刻 ・・・ 入力 時刻 出力 時刻 といった感じの書式です (3) 追加書込みされるファイルが一定容量以上になると自動的に別ファイルを生成して、そのファイルに書込まれる これは、Perlなどのスクリプト言語で作るべきでしょうか? それとも、( 例えば、コマンドやリダイレクトだけで作ると言ったような ) もっと簡単な方法がありますでしょうか?

  • killコマンド実行時のメッセージを出力させないためには?

    あるシェルスクリプトを実行させているところに、killコマンドを送り込むと、コンソールに「終了しました」と表示されてしまうのですが、これを表示させないようにすることはできますか??? kill 100 > 2>&1 > aaa.txtなどとしてもファイルに書き込まれないので、標準出力でも標準エラー出力でもないのでしょうか?

  • 引数で入力された月の翌月を算出する(Bシェル)

    実現したいことはC言語で記述したプログラムにて「AA_201012.txt」というファイルを出力した後に、Bシェル上でmvコマンドでリネームすることです。 上記の「201012」は年月なのですが、システム日付(date)から取得したものではなく、パラメーターとして入力されてくる「201011」の翌月をC言語で記述したプログラム上で求めたものであるため、「201011の翌月」をBシェル上で求める方法がわかりません。 C言語で出力する時の201012はシステム日付ではなくパラメーターの日付を出力していて、処理を流す日付に左右されず、パラメーターの201012をファイル名として使用するという制約があります。 ある環境ではそのままの名前でファイルを出力し、ある環境ではリネームしたいが、プログラムは変えたくないため、Bシェルでなんとかしたいです。 プログラムに不慣れなため、ご教授お願いします。

  • 【DOSコマンド】一致した文字列の次の単語を出力

    コマンドの実行結果の標準出力をリダイレクトしてテキストファイルに書き出しました。 このファイルを検索し、マッチした文字列の次の単語を出力したいのですが、 標準のDOSコマンド(あるいはコマンドラインで動作するフリーソフトを使用するのでも構いません)で実現するにはどうすれば良いでしょうか? テキストファイルの内容例 hogehoge: abcdefg この場合、abcdefgを出力したいです。 hogehogeは大文字小文字入り交じっています。

  • UNIXのnohupコマンドについて

    ohupコマンドについて質問です。 コマンド集などをみると、 「出力は、nohup.outというファイルへリダイレクト」します。 記述されているのですが、nohup.outファイルは、どこのディレクトリーに 作成されてするのでしょうか?