電子書籍の厳選無料作品が豊富!

実行するとgnuplotは、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」と表示されてしまいます。
プログラムは画像のようなものです.
コマンドプロンプト上で,gnuplotと打つと起動して,そのうえでグラフも描けました.つまりパスも通っています.
絶対パスで指定しても同じ文言が出てきます.
なにか解決策がある方があれば教えていただけますでしょうか。よろしくお願いします!

「Atom上でc言語を用いてgnuplot」の質問画像

A 回答 (5件)

""でくくらなかった場合、シェルにもよりますが…


C:\Program という実行可能ファイルに
Files\gnuplot\bin\gnuplotと
-persist
という二つのコマンドラインオプションを指定した。と解釈される可能性があります。
まぁ、『コマンドプロンプト 空白 パス』辺りで検索するとそういうのが見つかると思いますが。

ファイルパスの指定ですなで、拡張子まで必要です。

相対パスで駄目だった…というのは、"..\\bin\\gnuplot.exe"みたいな感じですかね?
相対パスの場合、『カレントディレクトリがどこなのか?』は重要ですが。
# なので、ファイルアクセスとかの時は絶対パス指定になるようにしてますね。
# 実行ファイルのファイルパスを取得する。というのはだいたい用意されているので、そこから文字列操作で絶対パスを生成します。
# 実行ファイルと同じディレクトリにデータファイルがある。とか、データファイルをまとめたサブディレクトリがある。とか…。
    • good
    • 0

使う処理系が違うと (例えば) popen で実行するシェルが違うかもしれず, したがって「パスの書き方」も違うかもしれない. その辺は「C の規格」にはない話.



でもってあなたが質問で貼ったやつと #2 の違いは, 本質的にはプロンプト上で
C:\Program Files\gnuplot\bin\gnuplot
と実行するか
"C:\Program Files\gnuplot\bin\gnuplot.exe"
と実行するかの違い.
    • good
    • 0

そも使ってる C の処理系はなに?

    • good
    • 1
この回答へのお礼

処理系とはコンパイラのことでしょうか.すみません.
コンパイラはmingwだと思います.gccかな.あまり違いが分かっていません.

お礼日時:2021/01/14 13:43

popen("\"C:\\Program Files\\gnuplot\\bin\\gnuplot.exe\" -persist", "w");


ではどうですかね?
ファイル名になるところを""で囲む…って方法ですが。
明示的に拡張子まで込みで。
    • good
    • 1
この回答へのお礼

Wr5さんの方法で成功しました!ありがとうございます.でもなぜそのやり方ではよくて私の方法ではだめだったのかよく分かりません.
写真のプログラムで,今日もう一度相対パスでやってみたところうまくいきました.ありがとうございます.
絶対パスではうまくいきませんでした.おそらくプログラム上でほかのプログラムを動かすときは絶対パスは使えず,環境変数でパスを通して相対パスでやるしかないのかなと思いました.もしくはパスを通した状態で絶対パスでやると不具合が出るか.(Wr5さんの方法では絶対パスじゃないのですかね...わからないです)勉強になりました.

お礼日時:2021/01/14 13:29

popenのパスの書き方が違うのかもしれません。


下のサイトでは、\\ではなく/を使っています。
https://www.eng.kagawa-u.ac.jp/~haruna/memo/gnup …
https://www.eng.kagawa-u.ac.jp/~haruna/memo/gnup …
    • good
    • 1
この回答へのお礼

このサイトを参考にしたこともあったのですが,うまくいきませんでした.
写真のプログラムで,今日もう一度相対パスでやってみたところうまくいきました.ありがとうございます.
絶対パスではうまくいきませんでした.おそらくプログラム上でほかのプログラムを動かすときは絶対パスは使えず,環境変数でパスを通して相対パスでやるしかないのかなと思いました.勉強になりました.

お礼日時:2021/01/14 13:25

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