1

2 つの C プログラムをテストして、そのカバレッジ (ライン カバレッジとブランチ カバレッジ) を確認したいと考えています。

Linux システムで gcovr を使用しています。

gccこれを行うために、コンパイラを呼び出してファイルから入力を読み取り、C プログラムのカバレッジをテストする Perl スクリプトを作成し ました。

Cプログラムに与えられるファイルの形で多くのテストスイートがあります.Perlを使用して入力を自動化し、gcovr.

もちろん、私は systemcommand と perl の backtics を使って and を呼び出しましgccgcovr

プログラムへの入力は与えられた引数から読み取られるため、最初の C プログラムは適切に実行されます。

しかし、2 番目の C プログラムについては、プログラムがキーボードからの入力しか受け付けないか、単に "it is using scanf" と入力するだけなので、混乱しました。

では、ターミナル linux を介して、またはコマンドscanfで perl を使用して、キーボード () からの入力のみを受け入れる C プログラムに入力を提供するにはどうすればよいでしょうか?system

4

2 に答える 2

0

scanfからの入力を受け付けますstdin。プログラムの起動時にファイルにリダイレクトstdinし、プログラムにそのファイルから入力を取得させることができます。

リダイレクトは OS の機能であり、特定の言語の機能ではありません。

プログラムを開始しようとしていて、このプログラムが '10' 'y' と 'n' を入力として受け入れることがわかっているとします。できる限り、これらの行を含むファイルを作成するだけです。このファイルの名前が test_1 であるとします。

次に、でプログラムを開始するtested_program < test_1と、プログラムは入力として '10'、'y'、および 'n' を使用します。

于 2016-01-01T16:18:29.713 に答える