Gnuplot和C“x范围无效”

时间:2014-04-10 13:35:14

标签: c gnuplot

我试图生成一个数据文件并用Gnuplot绘制它。问题是当我保持我的Nstep低于348时我得到了错误

line 0: warning: Skipping data file with no valid points

plot 'plot.txt' using 1:2 with lines
                                    ^
line 0: x range is invalid

但我保持Nstep高于348,一切正常。我不懂为什么。这是我的C代码:

int main(void){

    int Nstep = 348;

    //omitted part...

    FILE *pipe = fopen("plot.txt", "w+");

    while (n<Nstep) {
        pos[n+1] = pos[n] + v[n]*h;
        v[n+1] =  v[n] + h * Fx(pos[n]);

        fprintf(pipe, "%d %05.3lf\n", n, v[n]);
        n++;
        } 

    close(pipe);

    system("gnuplot -p -e \"plot 'plot.txt' using 1:2 with lines\"");

    return 0;    
}

plot.txt示例(Nstep = 10)

1 100.000
2 99.000
3 97.000
4 94.010
5 90.050
6 85.150
7 79.349
8 72.697
9 65.252
10 57.079

1 个答案:

答案 0 :(得分:0)

我无法复制您的错误,因为您没有包含完整的来源(函数Fx以及posv的定义)。你打错了。你应该调用fclose()(这也会刷新文件句柄)。

fclose(pipe)

而不是

close(pipe)

您可以通过调用fflush()显式刷新数据。