我正在学习如何正确地编写结构。但我不习惯修理结构。我想要的只是代码错误(对于结构)意味着什么以及如何解决它。它与数组类似吗?我知道代码没有输入,但我需要的帮助只是用于修复由结构引起的错误。
#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 :(得分: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
是一个好的开始。