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

C言語を用いてgnuplotを操作しデータファイルから自動的にグラフを作成するプログラムを作ろうとしています。

使用環境はWindows7、VisualStudio2010です。

ほとんどの部分はうまくいったのですが一部分が正しく表示されません。

軸の目盛ラベルの表示フォーマット設定のコマンドで
set format x "%.1f"
として小数点以下一桁を強制的に表示させるためC言語でパイプを用いて

#define GNUPLOT_PATH "C:/gnuplot/binary/pgnuplot.exe"

int plot(char *file_name){
FILE *gp;
gp = _popen(GNUPLOT_PATH, "w");
fprintf(gp, "set title 'TEST PLOT'\n");

(中略)

fprintf(gp, "set format x '%.1f' \n");//この部分が正しく反映されません。

(中略)

fprintf(gp, "plot '%s' using 1:2 with linespoints lt 4 lw 5 pt 6 ps 2.0 lc rgb 'red'\n",file_name);
fprintf(gp,"quit \n");
fflush(gp);
_pclose(gp);
return 0;

}

'%.2f' の部分をいろいろいじってみたのですがうまくいかず、なぜできないのか原因がわかりません。
fprintf()の数値代入の %f と混ざってしまっているのでしょうか?

A 回答 (1件)

fprintf の引数は(FILE*, フォーマット文字列,....) だと言うことをお忘れではないでしょうか?


%.1fはfprintfで解釈されて、dounle型を変換した文字列が出力されます。
そのdouble型の引数が無いんので、なにかその領域にあるものを無理矢理変換したか、領域違反でエラーになったか、です。

そのまま%を送りたいなら、次のようなものが常套手段でしょう。

fprintf(gp, "set format x '%%.1f' \n");
// %を二つ並べて、フォーマット変換を無効にする

fprintf(gp,"%s" "set format x '%.1f' \n");
// フォーマットに%sを指定して、文字列を与える
    • good
    • 0
この回答へのお礼

ありがとうございました!!
正しく反映されました。

基本がまだ全然できていなかったです・・・

お礼日時:2012/03/14 19:29

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