我有这个功能,我需要获取结构的坐标。
这些是结构:
// --------- ----------结构
typedef struct coordinates
{
int x_l;
int y_l;
int x_r;
int y_r;
} Coordinates;
typedef struct field
{
char Id;
Coordinates location;
int area;
int price;
} Field;
这是功能:
Field GetFieldFromUser(int cptr,Field *pf1)
{
//Field *pf
int i=0;
printf("\nPlease enter information for your new field:\n");
printf("the Id of the field is 5 digit num between 00000-99999:\n");
printf("The Id of the Field given Automatic by the system\n");
pf1->Id= 0000+cptr;
printf("\nThis is the ID for the new field: ");
printf("id = %05d\n",pf1->Id);
printf("\nPlease enter the coordinates of the top left of the field (press ' ' between the digits)\n");
scanf("%d %d",pf1->location.x_l,pf1->location.y_l);
fflush(stdin);
printf("Please enter the coordinates of the lower right of the field (press ' ' between the digits)\n");
scanf("%d %d",pf1->location.x_r,pf1->location.y_r);
return *pf1;
}
现在在编译器把我扔出去的位置的scanf,我不知道为什么
有什么建议吗?
答案 0 :(得分:5)
scanf("%d %d",pf1->location.x_l,pf1->location.y_l);
应该是
scanf("%d %d",&(pf1->location.x_l), &(pf1->location.y_l));
下一次scanf的逻辑相同。 scanf
期望它可以写入的地址。你传递了它的值(可能是未初始化的值)。所以它试图写入一些未知的内存位置。