2011-03-09 53 views
1

我想從C++調用gnuplot。我正在使用Windows和VS2005 C++的wgnuplot。創建管道並從C++寫入gnuplot終端

下面的語句工作,因爲它開啓了gnuplot的終端

FILE *p = _popen("wgnuplot -persist","w"); 

但我不能沒有寫任何東西。即使運行以下代碼,我的終端仍然是空白的。

fprintf(p, "set terminal x11 enhanced\n"); //set appropriate output terminal for the plot 
fprintf(p, "set xlabel 'N'\n");//set xlabel 
fprintf(p, "set ylabel 'error'\n");//set ylabel 

請問可能是什麼問題,即爲什麼終端爲空,而fprintf()似乎不起作用?

感謝,

鮑里斯

+1

你還叫'fflush(P)'? – 6502 2011-03-09 20:44:48

+0

這是我的完整代碼:FILE * p = _popen(「wgnuplot」,「w」); fprintf(p,「plot sin(x)」); fflush(p); fflush(stderr); getchar(); fprintf(p,「exit \ n」); _pclose(p); – Boris 2011-03-09 20:59:53

回答

0

檢查文件指針不爲NULL:

if(!p) 
    // _popen() has failed... 
+0

- \t \t管\t 0x10311d68 {_ptr = 00000000 _cnt = 0 _base = 00000000 ...} \t _iobuf * – Boris 2011-03-10 18:22:07

+0

這就是我所得到的,當我調試和檢查什麼是在管道。我仍然不知道爲什麼fprintf()不會寫任何東西給終端。 – Boris 2011-03-10 18:23:02

+0

@Boris所以p似乎沒問題,但內部似乎正在吹出... 我建議你看看函數的錯誤報告機制,它可能是由於提供錯誤的參數。 – 2011-03-11 09:09:10

0

我不知道如果這能幫助你,但是這是我從我的C執行的gnuplot方法程序:

  1. 我創建了一個模板文件(通常我不會刪除它,所以我t是比較容易解決),其中所有的gnuplot的命令的腳本英寸

  2. 我跑的gnuplot與

    system("gnuplot <TemplateFile>") 
    

如果你只創建一個情節感興趣,他會怎麼做工作。如果你在你上面那麼就忽略這個帖子所描述的方法明確興趣;)

Cherio Woltan