scanf到struct不起作用

我有这个function,我需要获得一个结构的坐标。 这些是结构:
// ——— ———-结构

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; 

这是function:

 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,我不知道为什么

有什么建议?

 scanf("%d %d",pf1->location.x_l,pf1->location.y_l); 

应该

 scanf("%d %d",&(pf1->location.x_l), &(pf1->location.y_l)); 

下一个scanf的逻辑相同。 scanf需要它可以写入的地址。 你传递了它的值(可能是未初始化的值)。 所以它试图写入一些未知的内存位置。