我是一名初学者。 我一直在学习C,Fortran和Perl。 我的目标是创建一个包含曲面图的网页。 我可以让我的程序进行通信以完成这项工作,但是在我的C程序中分配我的变量时遇到了问题。
从我的Perl程序中,我得到一个文本文件, data.in
只包含一行。
例如: cosxtsiny 50 0.5 3 0 6
。 这就是我所做的:
(将我的变量声明为char
, int
或double
)
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.1fn", 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)。
希望这可以帮助!
以上就是c/c++开发分享在C中:在单行文本文件中读取时分配变量相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522158.html