プロが教える店舗&オフィスのセキュリティ対策術

C言語からgnuplotを呼び出したいのですが、一瞬表示されてすぐ消えてしまいます。
プログラムは以下のように書きました。

---------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char **argv)

{

FILE *gid;

int i;

double x;

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

for (i=0; i<100 ;i++){

x = 0.03*i;

fprintf(gid,"plot sin(x-%f*pi)\n",x);

}

pclose(gid);

}

---------------------------------------------------------------

この後、
gcc test.c -lm
./a.out
でコンパイル、実行しました。

かなり初心者なので初歩的な質問かもしれませんがよろしくお願いします。

A 回答 (2件)

>C言語からgnuplotを呼び出したいのですが、一瞬表示されてすぐ消えてしまいます。



消えるという意味は理解できませんが、「plot sin(x-%f*pi)」の定数項「%f*pi」が 0.03 刻みで変わる sin(x-const) のサインカーブを描くよう GnuPlot に命令をC言語で作ろうというものですよね。

一瞬表示で消えてしまうという不満のようですから、表示にディレイ(pause)を入れましょう。なお、GnuPlot に sin(x-const) の曲線を描くよう命令するもので、sin(x-const) の値を描画しろというものではありませんから、math.h と -lm オプションは不要です。
コンパイルして実行すると、グラフが右の方にスクロールします。




/* SIN(x - aπ) を描く
* file neme: test.c
* compile : gcc test.c
* execution: ./a.out
* by MacOSX
*/
#include <stdio.h> //fprintf(), popen(), pclose()
int main(void)
{
FILE *gid;
int i;
gid=popen("gnuplot -persist","w");
for (i=0; i<100 ;i++){
fprintf(gid, "plot sin(x-%.2f*pi)\n", 0.03*i);
fprintf(gid, "pause 0.2\n");
}
pclose(gid);
return 0;
}
    • good
    • 0

pclose の前に,



scanf でなんか入力要求でもして,
プログラムの実行を一時停止しないと,

pclose で gnuplot 閉じるのと違うのか?
    • good
    • 1

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