【问题标题】:scanf to struct doesnt workscanf 到 struct 不起作用
【发布时间】:2011-06-03 14:18:39
【问题描述】:

我有这个功能,我需要得到一个结构的坐标。 这些是结构:
//---------结构----------

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 处,编译器将我抛出,我不知道为什么

有什么建议吗?

【问题讨论】:

    标签: c struct scanf


    【解决方案1】:
    scanf("%d %d",pf1->location.x_l,pf1->location.y_l);
    

    应该是

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

    下一个 scanf 的逻辑相同。 scanf 期望它可以写入的地址。您正在传递它的值(可能是未初始化的值)。所以它试图写入某个未知的内存位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      相关资源
      最近更新 更多