从txt文件中读取十进制数字并在C中使用它们

时间:2017-04-03 17:38:11

标签: c

我正在尝试创建一个程序,从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)但后来我不能用它们来计算三角形区域。

1 个答案:

答案 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文档