2012-11-19 22 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

相关问题