簡體   English   中英

如何打印和掃描結構

[英]How to print and scan structures

我正在學習如何正確編寫結構。 但是我不習慣固定結構。 我想要的只是代碼錯誤(對於結構)的含義以及如何解決。 它類似於數組嗎? 我知道代碼沒有輸入,但是我需要的幫助只是修復由結構引起的錯誤。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<limits.h>
#define MAX_POINTS 100
#define MAX_POLYGONS 100

typedef struct{
    int polyid[MAX_POINTS];
    int npoints[MAX_POINTS];
    double x[MAX_POINTS];
    //Stage1
    double y[MAX_POINTS];
    double perimeter;
    double eccentricity;
    double area;
} Polygon;

int main(int argc, char *argv[]) {
    Polygon Total_poly[MAX_POLYGONS];
    int count=0;
    int i,j,k,l;
    printf("Stage 1");
    printf("=====");
    while(scanf("%d %d",&Total_poly[count].polyid,&Total_poly[count].npoints)==2){
        printf("First Polygon %d",Total_poly[count].polyid);
         printf("x_val      y_val");
        for(i=0;i<Total_poly[count].npoints;i++){
             while(scanf("%lf %lf",&Total_poly[count].x[i],
                        &Total_poly[count].y[i])==2){
             printf("%d     %d",Total_poly[count].x[i],
                        Total_poly[count].y[i]);
                        }
        }
    }

    //Stage2
    //Stage3
return 0;

}

多謝你們!

Polygon Total_poly[MAX_POLYGONS]; 使用超過240 KB的堆棧空間。 在某些系統上可能會引起問題。 您可能應該將此數組設置為全局數組,或者使用malloc()對其進行分配。

這里有一個錯誤:

printf("%d     %d",Total_poly[count].x[i],
                    Total_poly[count].y[i]);

您使用%d ,但是將double值作為參數傳遞。 您應該使用%e%f%g

您應該將編譯器配置為產生有用的警告消息,以防止此類錯誤。 gcc -Wall -W -Werror是一個好的開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM