前提・実現したいこと
Cでgnuplotを利用したグラフの描画を行いたい。
発生している問題・エラーメッセージ
参照先には確かにgnuplot.exeが存在し実行もできるのですが、Visual Studio Codeから以下のプログラムを実行しても開けず、「sh: 1: C:/PROGRA~1/gnuplot/bin/gnuplot.exe: not found」と出力されてしまいます。
該当のソースコード
#include <stdio.h> #include <stdlib.h> #include <string.h> #define GNUPLOT_PATH "C:/PROGRA~1/gnuplot/bin/gnuplot.exe" void main(){ int d[100]; int i; for(i = 0;i < 100;i++){ d[i] = 5; } i = 0; //以下のwhileループ回数がデータ数 while(i < 100){ int a,b; a = rand()%(100); b = rand()%(100); if(d[b] > 0){ if(b != a){ i += 1; d[a] += 1; d[b] -= 1; } } } FILE *fp; fp = fopen("output.txt","w"); for (i = 0;i < 100;i++)fprintf(fp,"%d\n",d[i]); fclose(fp); //gnuplotでグラフを作成 FILE *gn; if((gn = popen(GNUPLOT_PATH, "w")) == NULL){ fprintf(stderr,"ファイルが見つかりません %s.",GNUPLOT_PATH); exit(EXIT_FAILURE); } for(i = 0;i < 100;i++){ fprintf(gn, "plot d[i]\n"); } pclose(gn); }
試したこと
各フォルダのパスの確認。
補足情報(FW/ツールのバージョンなど)
間のコードは無視していただけると幸いです。
パスを見るとWindowsっぽいですが、ビルド環境は何ですか?
ご質問いただきありがとうございます。
初学者のため用語に関する理解が乏しいのですが、ビルド環境とは開発環境のことで相違ないでしょうか......?
もしそうでしたらVisual Studio Codeでコードを書いています。
追記:仰る通りWindowsです。
Codeはエディタですね。コンパイラは何でしょう?gccですかね?
はいgccです。
PROGRA ~1って怪しいなあ。
エクスプローラでCドライブ直下を見るとそんな名前のフォルダがありますか?(環境変数指定のフォルダのような気がする)
MSYS2ですかね。それともMingw-w64単体かな。
"/c/PROGRA~1/gnuplot/bin/gnuplot.exe" だとどうでしょうか。
あるいは "/c/Program Files/gnuplot/bin/gnuplot.exe" か
はたまた "/c/Program\ Files/gnuplot/bin/gnuplot.exe" か
なるほど......
PROGRA~1に関しましてはcmdからCドライブ直下のフォルダにdir /xで検索をかけて得たパスコードでそれを利用していました。
rinjintoさん、PROGRA~1はWindowsの8.3短縮形式(ショートネーム)ですよ。
コマンドプロンプトの場合、環境変数で定義されたフォルダ名は使えますが、Cプログラムでは使えない気がします。
”PROGRA~1"ではなく"Program Files"(もしくは"Program Files(x86)")を使ってみてどうなるか試してみてください。
itagakiさん、ショートネームなのは理解してるんですが、プログラムでそれは使えましたっけ?
"/c/PROGRA~1/gnuplot/bin/gnuplot.exe" だとどうでしょうか。
あるいは "/c/Program Files/gnuplot/bin/gnuplot.exe" か
はたまた "/c/Program\ Files/gnuplot/bin/gnuplot.exe" か
>”PROGRA~1"ではなく"Program Files"(もしくは"Program Files(x86)")を使ってみてどうなるか試してみてください。
itagakiさん、rinjintoさんのご指摘いただいたように記述して出力させていただきましたが、やはり「not found」が出力されてしまいました。
再度確認しましたが、アイコンをクリックすればアプリケーション自体は利用できるのは間違いないようです......