プロが教えるわが家の防犯対策術!

C言語を用いてgnuplotで図を描写したいです。しかし、「gnuplotは、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」と表示されてしまいます。
http://www.eng.kagawa-u.ac.jp/~haruna/memo/gnupl … を参考にして作成したのですが、上手くいきません。なにかアドバイスいただけたら幸いです。

「visual atudio code で」の質問画像

A 回答 (3件)

ええと、貴方のコードを元にして手元のLinuxで動かしてみましたが、問題なく動作しています。



#include <stdio.h>

int main(void){
 FILE *gp;

 gp = popen("gnuplot -persist", "w");
 fprintf(gp, "plot sin(x)\n");

 fflush(gp); /* ここは必須では? */

 fprintf(gp, "exit\n"); /* gnuplotを終了させる為にここは必須では? */

 pclose(gp);

 return 0;
}

と言う事は一番考えられる事は、gnuplotにパスが通ってないんでしょうねぇ(Linuxの場合、gnuplot等のソフトウェアをインストールすれば自動的にパスが通った事になるが、Windowsだとそうではない辺りがややこしい)。

と言うわけで、ちょっと次の事を確認して下さい。

1. コマンドプロンプト(DOS窓)を開く。

2. コマンドプロンプトで

gnuplot -persist

(つまり、貴方が書いたCのプログラムからpopen経由でDOS窓へ通知した"命令")と打ってみて、gnuplotが起動するかどうか調べてみる。

多分十中八九、起動しないで"gnuplotは、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。"と表示されるんじゃないか、って推測します。

もしそうならば、

1. インストールされたgnuplotが「どこにあるか」パスを調べてみる。

昔のWindowsだとC:\Program FIles\の下とか、C:\Program Files (x86)\の下であるとか、にインストールされてたものですが、最近だと(Windows 10以降?)「管理者権限」を嫌って例えばC:\Users\ユーザー名\Applications(だったかな?Windows使ってないからうろ覚え)以下にインストールされる事が増えています(特にフリーソフトウェア等の類は)。
あるいは、「自分の好みの場所」にインストールする事もあるでしょう。貴方の提示したページ( http://www.eng.kagawa-u.ac.jp/~haruna/memo/gnupl … )のセンセだと直接Cドライブ直下にインストールしていますが、一方で、それが「全てのWindowsユーザーに当てはまる」とは限らないのです(むしろ「違う」って思ってた方が良い)。
いずれにせよ、インストールされた、具体的にはgnuplot.exeが一体どこにあるのか、調べないといけないですね・・・。DOSコマンドは良く分からないんだけど、コマンドプロンプトでwhere gnuplot.exeと打てば探してくれるのかしらん(Linuxだとwhereisとかwhich使えばアプリケーションの位置を知らせてくれるんですが、多分似たコマンドがDOSにもあるんじゃないかなぁ)。

2. gnuplot.exeの位置が分かったら解決策は3つあって、

a. 貴方の書いたコードの7行目、

  gp = popen("gnuplot -persist", "w");

 を、

  gp = popen("C:\1. \で\調べた\パス名\gnuplot -persist", "w");

 b. センセがやってたように

 #define GNUPLOT_PATH "C:\1. \で\調べた\パス名\gnuplot.exe" // gnuplot.exeのある場所

 とマクロ定義しておいて、7行目もセンセがやってたように

 gp = _popen(GNUPLOT_PATH, "w")

 で置き換えてしまう(言い方変えると、貴方の書いたコードは直接gnuplotをpopenで呼び出そうとしてたので、マクロ定義は意味が無かった)。

 c. 怒髪天を突きながらいっそのことインストールしたgnuplotへとパスを通してしまう。

 Windows10での任意のフォルダへのパスの通し方は次のページを参考にしてください。

 Windows10で実行ファイルへのパスを通す手順:
 https://qiita.com/shuhey/items/7ee0d25f14a997c9e …

 まあちとメンド臭いんですが、「Windowsでプログラミングし続ける」のなら必須の技能ではあるかもしれません。そしてこの場合には(基本的には)貴方の書いたプログラムは修正の必要はございません(ちょっと危険ですけどね)。

a, b, c,の解決策のどれかがお役に立てればいいんですけどね。
    • good
    • 0

gnuplotをインストールしていないのでは?


Linux環境では標準で入っているかもしれないけどWindows環境だとインストールしない限りは入ってない。gnuplotをインストールした上でパスを通すことが必要になる。
あとNo.2の人がいうwhereコマンドもWindows環境にはない。あってもパスが通ってないと見つけてくれないので無駄だけど。
実行ファイルの場所を探したければ自力で探す必要がある。アイコンやスタートメニューからの起動が可能なら、アイコンなら右クリックからプロパティを開いてリンク先を確認する。スタートメニューなら右クリックのその他からファイルの場所を開いてパスを確認する。
    • good
    • 0

そもそも gnuplot は使えるの? PATH は通ってる?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!