-1

我有以下代码:

typedef struct {
   double x, y;
} point_t ;


typedef struct {
    point_t a, b, c;
} triangle_t;

int read_point(point_t * const point) {
    int status = scanf(" (&lf,&lf)", &point_t.x, &point_t.y);
    return(status);
}

我正在尝试读取用户为三角形的顶点输入的 x 和 y 坐标(点 a、b 和 c)。但是,我在 scanf 函数中强调两个“point_t”实例时遇到了一个奇怪的错误.

不允许使用类型名称。

这是怎么回事?

4

2 回答 2

8

将其更改为:

int status = scanf(" (%lf,%lf)", &(point->x), &(point->y));

记住使用变量名point,而不是类型名point_t。同样重要的是要注意您必须->在指针类型上使用运算符(这相当于取消引用它然后使用成员运算符 [ p->x == (*p).x])。

于 2013-04-04T21:26:12.257 回答
-3

试试这个代码

typedef struct {
   double x;
   double y;
} point_t ;


typedef struct {
    point_t a;
    point_t b
    point_t c;
} triangle_t;

int read_point(point_t * point) {
    int status = scanf(" (&lf,&lf)", point->x, point->y);
    return(status);
}

我认为在结构中,你应该用它的类型声明每个字段;多个声明 asint x,y不起作用。其次,您正在传递一个指针,因此要访问您应该以这种方式使用您的参数的名称(“point”是这种情况)point->field(*point).field不使用&point

于 2013-04-04T21:32:00.533 回答