[英]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.