在C中使用FILE*来打开命令工具和馈送数据



我一直在研究可视化数据的方法,偶然发现了gnuplot。它看起来很好,也很有用,但我试图找到一种将其嵌入程序本身的方法,而不必单独感受数据。然后,我偶然发现了一个讨论该主题的堆栈溢出答案,但他们掩盖了某些事情是如何工作的,因为它目前与他们的问题无关,所以我在这里问:

他们在这里的帖子:

因此,代码提取将是:

void gnuprint(FILE *gp, double x[], int N){     
int i;
fprintf(gp, "plot '-' with linesn");
for (i=0; i<N; i++){fprintf(gp, "%g %gn", x[i],WF[2*i+1]);}
fflush(gp);
fprintf(gp, "en");                                                                
}

根据我从代码中了解到的情况,他们似乎已经将gnuplot程序作为一个文件打开,并像写入文件一样输入信息。我只是不明白如何初始化gp指针以在这种状态下保持程序打开。如果您能理解如何做到这一点,我们将不胜感激。感谢

您为gnuprint((提供的代码提取不完整或有点损坏。它没有提供WF[]的定义。去掉它并将其包装在一个最小的main中。c给出了以下简单的例子:

#include <stdio.h>
void gnuprint(FILE *, double *, int);
int main()
{
double x[7] = {11,55,22,44,33,77,66};
FILE *gp;
/* Open a pipe to gnuplot giving the 'persist' option */
gp = popen("gnuplot -p", "w");
gnuprint(gp, x, 7);
}
void gnuprint(FILE *gp, double x[], int N)
{     
int i;
fprintf(gp, "plot '-' with linesn");
for (i=0; i<N; i++){fprintf(gp, "%d %gn", i, x[i]);}
fflush(gp);
fprintf(gp, "en");                                                                
}

这编译、链接和构建一个可执行文件,调用";gnuplot-p";并将命令和数据提供给它进行绘图。"-p〃;gnuplot的选项告诉它在退出后让绘图显示在屏幕上。

最新更新