创建管道并从C++编写GNUGOT终端 我试图从C++调用GnUpTrm。我使用WGNUPPLICE for Windows和VS2005 C++。

创建管道并从C++编写GNUGOT终端 我试图从C++调用GnUpTrm。我使用WGNUPPLICE for Windows和VS2005 C++。,c++,gnuplot,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

下面的语句之所以有效,是因为它打开了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似乎不工作

谢谢


Boris检查文件指针是否不为空:

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

我不知道这是否对您有帮助,但这是我从C程序执行gnuplot的方法:

我创建了一个模板文件,通常不删除它,这样就更容易进行故障排除,因为所有gnuplot命令都是用脚本编写的

我和你一起运行gnuplot

system("gnuplot <TemplateFile>")
如果你只对创造一个情节感兴趣,他会做的。如果你明确对上述方法感兴趣,那么就忽略这篇文章


Cherio Woltan

您也调用了fflushp吗?这是我的完整代码:FILE*p=\u popenwgnuplot,w;fprintfp,plot sinx;松驰;fflushstderr;getchar;fprintfp,退出\n_pclosep-管道0x10311d68{{u ptr=0x00000000\u cnt=0\u base=0x00000000…}\u iobuf*这是我调试和检查管道中的内容时得到的。我仍然不知道为什么fprintf不向终端写入任何内容。@Boris so p似乎没问题,但内部似乎发生了爆炸。。。我建议您研究函数的错误报告机制,这可能是由于提供了错误的参数。Microsoft说:函数在出现错误时返回NULL。如果错误是无效参数,例如如果命令或模式是空指针,或者模式不是有效模式,则errno设置为EINVAL。有关有效模式,请参见备注部分。