- ベストアンサー
Cのプログラムで他の実行ファイルを使用する方法
- Cのプログラム中で他の実行ファイルを使用する方法を教えてください。他の実行ファイルのソースファイルはありません。
- 例えば、aとbの二つの整数を渡して足し算する実行形式のファイルPlus.exeがあった場合、CのプログラムでそのPlus.exeを使用して和Cを計算する方法を教えてください。
- 具体的には、test.cというプログラム中でPlus.exeを使用して、aとbの和Cを計算する処理を行いたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
char s[64]; sprintf(s, "%s", "plus"); を行うと、sの内容(char型配列の内容)が"plus"となる点はOKですね? そうしておいて system(s); を行うと、これは system("plus"); と同じ結果になります。
その他の回答 (4)
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
sprintf関数の使い方は調べてみたでしょうか。 そのうち、どの部分が分かって、どの部分が分からなかったでしょうか。
補足
> sprintf関数の使い方は調べてみたでしょうか。 調べてみました。 charの配列sに、文字を代入する関数だと理解したのですが・・・ char s[64]; sprintf(s,"%s",argv[1]); こんな感じでしょうか。 system関数の中で、このsをどのように使うのかが 全くわからないのですが・・・
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
printf関数の親戚筋にあたる、sprintfという関数があります。その使い方をライブラリリファレンスで調べてみてください。 ※これが唯一の方法ではありません。いろんな方法のうちの1つです。
補足
c = system("plus %d %d",a,b); とか試しているのですが・・・だめです! 素人なもので全くわかりません。 教えてください。
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
a=111, b=222のとき、system("plus 111 222")を実行したいとしましょう。 system関数に渡しているのは文字列ですよね。上の例では"plus 111 222"です。 さて、a=111, b=222のとき、"plus 111 222"のような文字列を作成するにはどうしたらいいでしょうか。 (まずはヒントだけにしておきます。)
補足
いろいろ試しているのですが・・・ 思いつくもの試してみましたがだめでした。 ギブアップです(@_@;)
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
Cの標準ライブラリ関数を使用するとすれば、system関数を使用します。 main関数が最後に値を返しますが、その値がプログラムの「終了コード」とか「終了ステータス値」とか呼ばれる値になります。 この値を使う機会はあまり多くないのですが、system関数がその少ない機会の1つです。system関数を使ってあるプログラムを実行すると、system関数がその終了コードを返します。(正確にはちょっと異なる点もあるのですが、だいたいこんな理解で大丈夫でしょう。) system関数の使い方は、ライブラリリファレンスがあると思うので、そちらを参照してください。その上で使い方が分からなければ、どこまで分かって何が分からないのか補足してください。
お礼
さっそく御回答いただきありがとうございました。<(_ _)>
補足
system関数は初めて知りました(^^ゞ とても便利ですね。 1つわからないのが、引数の渡し方です。 例えば、以下のように使用する場合、 2と1の部分を変数にしたいのですがどのようにしたら良いのでしょうか? system("plus 2 1");
お礼
なるほど! 良くわかりました。 教育的なご回答ありがとうございました。 sprintf関数は出力ファイル名をつける時に使用していたのですが、 このような使い方ができるとは、、、目から鱗です(@_@;) おかげさまでsystem関数のことも少し知ることができました。 ありがとうございました。