多边形读取

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DATA_SIZE 1024
typedef struct
{
    double x;
    double y;
} Point;

typedef struct Polygon
{
    char name[20];
    Point point1;
    union
    {
        Point point2;
        double Radius;
    } cate;
    struct Polygon *next;
} Polygon;

int main()
{
    FILE *fp=fopen("data.txt","r");
    Polygon *L=(Polygon *)malloc(sizeof(Polygon));
    L->next=NULL;
    Polygon *p=L;
    char s[50],ch;
    double x1,y1,x2,y2;
    fscanf(fp,"%s",s);
    printf("输入:%s\n",s);
    char Line[100]="LINE";
    while(strcmp(s,"END"))
    {
        Polygon *q=(Polygon *)malloc(sizeof(Polygon));
        q->next=NULL;
        strcpy(q->name,s);

        if((!strcmp(s,"LINE"))||!strcmp(s,"RECT"))
        {
            fscanf(fp,"%lf %lf %lf %lf",&(q->point1.x),&(q->point1.y),&(q->cate.point2.x),&(q->cate.point2.y));
            printf("%.2f %.2f %.2f %.2f\n",(q->point1.x),(q->point1.y),(q->cate.point2.x),(q->cate.point2.y));
        }
        if(!strcmp(s,"CIRCLE"))
        {
            fscanf(fp,"%lf %lf %lf",&(q->point1.x),&(q->point1.y),&(q->cate.Radius));
            printf("%.2f %.2f %.2f\n",(q->point1.x),(q->point1.y),(q->cate.Radius));
        }
        printf("\n\n");
        fgetc(fp);
        p->next=q;
        p=q;
        fscanf(fp,"%s",s);
        printf("输入:%s %d\n",s,strcmp(s,"END"));
    }
    fclose(fp);
}

猜你喜欢

转载自blog.csdn.net/weixin_42034217/article/details/85149065