我正在尝试创建一个程序,从b.txt
文件中读取三个点(女孩形成一个三角形),如下所示:
(-3,-3) (4,-5.5) (-2,1)
后来我需要计算三角形面积(本例中P = 15.25)
我的代码:
#include <stdio.h>
int main()
{
FILE *fp=fopen("b.txt","r");
int i=0;
float x[3],y[3];
char bracket,comma;
while(fscanf(fp,"%c%f%c%f%c",&bracket,&x[i],&comma,&y[i],&bracket)==5)
i++;
for(i=0;i<3;i++)
printf("%f %f\n",x[i],y[i]);
fclose(fp);
return 0;
}
结果我得到了:
0.000000 1102137707490764237397621571846144.000000
0.000000 0.000000
0.000000 0.000000
有谁能让我知道如何阅读这些数字? 提前致谢! PS 我知道如何用fgetc读取数字(作为char)但后来我不能用它们来计算三角形区域。
答案 0 :(得分:0)
如果你的线路格式是固定的,那么就可以完成这项任务:
#include <stdio.h>
struct point {
float x;
float y;
};
int main() {
FILE *fp = fopen("b.txt", "r");
int i = 0;
struct point p[3];
char bracket, comma;
fscanf(fp, "(%f,%f) (%f,%f) (%f,%f)", &p[0].x, &p[0].y, &p[1].x, &p[1].y,
&p[2].x, &p[2].y);
for (int j = 0; j < 3; j++) {
printf("%.2f %.2f\n", p[j].x, p[j].y);
}
fclose(fp);
return 0;
}
为了理解我建议的代码,请查看fscanf文档