如何用C语言编写这个程序?第3.0部分

如何用C语言编写这个程序?第3.0部分,c,pass-by-reference,scanf,C,Pass By Reference,Scanf,编写一个名为readRect()的函数,该函数使用scanf()读取定义 矩形的位置。这些值是xmin、ymin、xmax、ymax顺序的整数。你的 函数应通过引用传递参数以返回这四个整数值。此外,您的功能是返回一个整数,该整数是成功扫描的值的数量,因此用户可以键入非数字项(如eod)以指示无数据(即,使用返回类型返回此值)。 我不明白如何创建函数readRect(),以便它通过引用传递参数 int readRect (int w, int x, int y, int z){ retu

编写一个名为readRect()的函数,该函数使用scanf()读取定义 矩形的位置。这些值是xmin、ymin、xmax、ymax顺序的整数。你的 函数应通过引用传递参数以返回这四个整数值。此外,您的功能是返回一个整数,该整数是成功扫描的值的数量,因此用户可以键入非数字项(如eod)以指示无数据(即,使用返回类型返回此值)。 我不明白如何创建函数readRect(),以便它通过引用传递参数

int readRect (int w, int x, int y, int z){
     return scanf("%d%d%d%d\n",&w,&x,&y,&z);
}



int main (void){
    int a,b,c,d;
    printf(">>enter two rectangles:\n");
    readRect(a,b,c,d);

    return EXIT_SUCCESS;
}

您需要通过地址传递参数,也称为指针。因此,函数头将是:

int readRect ( int * w, int * x, int * y, int * z )
来自
main
的调用将

readRect ( &a, &b, &c, &d );
重写为

int readRect (int *w, int *x, int *y, int *z)  
{
      return scanf("%d%d%d%d",w,x,y,z);  
}  
并从
manin
as中调用它

readRect(&a, &b, &c, &d);

请注意,在C中,所有调用都是按值而不是按引用进行的

当我只在main中使用readRect()一次时,为什么它在终止之前扫描8个值?@user2805620;Romove
\n
来自
scanf
你能告诉我为什么吗?我不只是想知道这是你为了不扫描而做的。