2012-11-19 25 views
2

我想讓我的程序自動打開GNUplot並繪製給定文件中的圖形。打字時我的程序在C中打開GnuPlot

ivalid command 

而且我在命令行檢查和:Unfortunetaly它不properlly工作:

system("gnuplot> plot '/home/user/Desktop/program/data.txt'"); 

的PROGRAMM運行gnuplot的,但我constantyly從gnuplot的得到一個錯誤

gnuplot> plot '/home/user/Desktop/program/data.txt' 

我也得到同樣的錯誤,但是當第一次打字gnuplot然後

plot '/home/user/Desktop/program/data.txt' 

它正常工作。

因此,結論是,我應該在PROGRAMM使用第二種方法(但我不知道如何使用system()把幾個命令或修復第一種方法。感謝您的幫助!

+2

如果你所得到的*同樣的錯誤*你從命令行調用,那麼這*有*完全沒有*與你的C代碼。關注這樣的事情將有助於您在將來更快更好地進行調試。您已經知道要查看*您應該如何調用gnuplot *,這意味着您應該閱讀文檔。 – dmckee

回答

3

你必須調用gnuplot的是這樣的:

gnuplot -p -e "plot '/home/user/Desktop/program/data.txt'" 

而且在C:

system("gnuplot -p -e \"plot '/home/user/Desktop/program/data.txt'\""); 
+0

選項-p和-e會做什麼?請解釋。 –

2

需要知道的操作系統,但假設一個Linux的變種:>輸出重定向正如你已經發現了,這不是一個有效的命令

輸入最好的辦法是:。

A)檢查是gnuplot的有一個命令行參數,因此它可以從命令行獲取命令。 例如gnuplot -command plot data.txt(這是一個樣本,我做了它,不知道是否有像'命令')

B)@anatolyg在他的答案寫道:你可以寫命令到一個文件,然後告訴gnuplot讀該文件。這與方法A類似(不要忘記在使用後刪除臨時文件)

C)將命令和管道回聲到gnuplot。例如echo plot '/home/user/Desktop/program/data.txt' | gnuplot"

2

嘗試將gnuplot命令plot '/home/user/Desktop/program/data.txt'放入文件中,例如myfile,並告訴gnuplot的從中讀取數據:

FILE* f = fopen("myfile", "wt"); 
fprintf(f, "plot '%s'\n", "/home/user/Desktop/program/data.txt"); 
fclose(f); 
system("gnuplot < myfile"); 
+0

這是我首選的方法,當您開發更復雜的繪圖命令時,您將有該文件進行檢查以進行調試。還可以避免一些頭疼的東西逃離殼體。在許多情況下,無論如何它都可以保存該文件,但顯然取決於你在做什麼。 – agentp

相關問題