2015-05-31 145 views
0

我正在學習如何正確編寫結構。但我不習慣修理結構。我所需要的就是代碼錯誤(對於結構)意味着什麼以及如何解決它。它與數組類似嗎?我知道代碼沒有輸入,但我需要的幫助只是爲了修復由結構引起的錯誤。如何打印和掃描結構

#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; 

} 

謝謝你們!

+0

呃......又怎麼樣? – user35443

+0

我認爲你需要重新定義你的結構。它裏面有太多的數組。請參見http://ideone.com/YOSjYt – pmg

+0

結構數組對於堆棧變量來說相當多。建議用'malloc'獲取內存。 –

回答

1

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是一個好的開始。