在C中:在单行文本文件中读取时分配变量

我是一名初学者。 我一直在学习C,Fortran和Perl。 我的目标是创建一个包含曲面图的网页。 我可以让我的程序进行通信以完成这项工作,但是在我的C程序中分配我的变量时遇到了问题。

从我的Perl程序中,我得到一个文本文件, data.in只包含一行。

例如: cosxtsiny 50 0.5 3 0 6 。 这就是我所做的:

(将我的变量声明为charintdouble

 FILE *fi fi = open("data.in", "r"); fscanf(fi, "%s %d %f %f %f %f", &func, &PTS, &xxa, &xxb, &yyc, &yyd); close(fi); 

我应该生成一个文件data.out ,其中包含我从data.in得到的值,一旦我用它做了一些计算。 这些将在以后为我生成表面图。

这是我的问题:我得到一个具有正确数量的网格图(PTS)的曲面图,所以我知道前两个任务是正确的,但我的轴是关闭的。 当我看到我的data.out ,我的轴不会开始和结束它们应该的位置。 有什么建议?

我想如果你将func声明为字符数组,那么你应该写一些像fscanf(fi, "%s", func)而不是fscanf(fi,"%s", &func)

定义一个char数组char func[LEN]; 或者为你的char指针分配内存func = (char *)malloc(NUMBER_OF_BYTES_YOU_WANT);

你还需要写scanf("%s", func); 不是&func ;

我尝试了以下并且工作正常。

 #include  #include  int main() { FILE *fpi, *fpo; char data[100]; int pts; float xxa, xxb, yyc, yyd; fpi = fopen("data.in", "r"); if (fpi == NULL) { perror("Failed to open file - data.in \n"); return 1; } fscanf(fpi, "%s %d %f %f %f %f", data, &pts, &xxa, &xxb, &yyc, &yyd); fclose(fpi); /* do you calculations here */ fpo = fopen("data.out", "w"); if (fpi == NULL) { perror("Failed to open file - data.out \n"); return 1; } fprintf(fpo, "%s %d %1.1f %1.1f %1.1f %1.1f\n", data, pts, xxa, xxb, yyc, yyd); fclose(fpo); return 0; } 

我看到以下输出:

 > > cat data.in cosxtsiny 50 0.5 3 0 6 > > gcc ac > > ./a.out > > cat data.out cosxtsiny 50 0.5 3.0 0.0 6.0 > 

注意:您可以根据要打印的小数点数更改fprintf()格式说明符(fe%1.1f)。

希望这可以帮助!