2011-07-09 10 views
1

をリダイレクト(K & R)プログラム例と著者の状態がある:質問 - 「プログラミング言語C」のセクション1.6で入力

The output of this program ON ITSELF is 
    digits = 9 3 0 0 0 0 0 0 0 1, white space = 123, other = 345 

そして多くの同様のプログラムがある等を含みます演習。私はコードのロジックについてすべてを理解しており、演習を行うことができますが、Web上の著者や他の多くの人のようなファイルでプログラムを実際にテストするにはどうすればよいですか?

編集:質問は次のようにする必要があります。ファイルの入力をプログラムにリダイレクトするにはどうすればよいですか?

+2

私はあなたが何を求めているのか分かりません。あなたはCプログラムをコンパイルして実行する方法を尋ねていますか? –

+1

[CLI](http://en.wikipedia.org/wiki/Command-line_interface)は何かを意味しますか?本書では、CLIで作業していることを前提としています。 GUIで作業することは、実際にはC言語に関連しないいくつかの課題を提示します。 CLI環境での作業が容易であるようにシステムをセットアップすることができます。 – pmg

+0

次の例では、getchar()を使用して入力から文字を読み込み、何かを実行してからputchar()を使用して文字を出力します。そして、著者は実際のファイルを使用していると言っています。実際のファイルから、これをどうやって行うのかが分かります。私はそれをどうやってやれるのか分からないので、私はこれをどうやってできるのかを尋ねています。私はそれがC言語ではなくオペレーティングシステムと関係していると思う。 – kmikael

答えて

4

第1.6章のプログラムはstdinからの入力を読み取ります。それはファイルから読み込むようにするには、(ほとんどのオペレーティングシステムで)このようなあなたのプログラムを実行することにより、標準入力がファイルであることをリダイレクトすることができます。

myprogram < somefile 

をそれとも、パイプそうのように、それまでのファイルの内容を次のことができます。

cat somefile | myprogram 

Windows上で、あなたは、catの代わりにデフォルトで

type somefile | myprogram 
+0

ありがとう! 'myprogram は私が探していたものです。私はMac OS Xを使用しています。 – kmikael

+0

注:あなたのシェルがファイルのリダイレクトをサポートしていない限り、ほとんどの場合、 'cat'(または' type')を使ってはいけません。 [Cat Awardの無駄な使用](http://partmaps.org/era/unix/award.html)を参照してください。しかし、 '<'に+1してください。 –

2

これはリダイレクトを使用しています。キーボードからのプログラムへの入力ではなく、ファイルからの入力です。

C - ::DOSプロンプトで

> myexe <ファイル名

、WindowsのDOSプロンプトに取得するには、コマンドシェルを使用します。またはRunを起動してcmdを入力してください

Macではこれを「ターミナル」と呼びます(これを取得するにはSearchlightにタイプしてください)。

2

typeプログラムを使用したい、あなたのプログラムはABである、標準入力からの入力がかかりますあなたのキーボードからの入力に基づいて満たされたuffer(デフォルトで)。しかし、テキストファイルからstdinを書き込むようにプログラムに指示することもできます。

* nixベースのシステムを使用すると、テキストファイルを作成して、希望どおりに保存することができます。たとえば、「test_input」です。あなたは、あなたのプログラムに渡すようにそれを保存し、このようなあなたのプログラムを実行したい入力して、それを入力します。

./a.out < test_input 

(あなたがする場合)は、「リダイレクト」されているので、これはリダイレクトと呼ばれていますデフォルト(キーボード)ではなく、ファイルからの入力です。両方向に進むと、出力をファイルにリダイレクトすることもできます。これは、他の山括弧( '>')で標準出力するのではなく、出力します。

Visual Studioを使用して、上記のコマンドを実行するコマンドプロンプトをポップアップ表示しないで、C++ ifstreamを使用してテキストファイルをローカルディレクトリに配置し、ifstreamをstdin:

ifstream sin("test_input.txt" , ifstream::in); 
int value; 
sin >> value; 

ofstreamを使用してファイルに出力できます。

ifstreamsとofstreamsはC++オブジェクトであり、Cでは使用できないことに注意してください。Cでファイルに書き込み、ファイルから読み込むことはできますが、単にcoutとcinのすべてのインスタンスを置き換えるよりもややこしいことです。あなたは実際にあなたが読んで書いているものについて考えなければなりません:)

+0

'./a.out

+0

あなたの答えと説明もありがとう、arasmussen。 – kmikael

関連する問題