无法打印传递结构

时间:2015-12-02 03:57:46

标签: c struct

您好我想将一个struct数组传递给一个方法,而不是打印它的值但是当我尝试它只打印零时,请注意主要工作正常问题是在max方法中:

#include <stdio.h>
#include <stdlib.h>

struct rectangle {
    float length;
    float width;
};

void max (struct rectangle * a, int size){
  printf("the test %d \n", (*a).width);
  int i;
  for(i=0; i<size; i++){
    printf("the test %d \n", a[i].width);
  }
}    


void main()
{
   printf("enter the size of both arrays \n");
   int x ;
   scanf("%d",&x);

   struct rectangle* r ;
   r =  malloc(x*sizeof(struct rectangle));
   int j ;
   for (j = 0 ; j < x ; j++){
     printf("enter rectangle length \n");
     scanf("%f",&r[j].length);
     printf("enter rectangle width \n");
     scanf("%f",&r[j].width);
   }

   for (j = 0 ; j < x ; j++){
     printf("  %f\n",r[j].length);
     printf("  %f\n",r[j].width);
   }
   max(r,x)

}

但是当我尝试运行它时会崩溃。

2 个答案:

答案 0 :(得分:1)

目前,您正在将指针传递给指向结构的指针,但在函数max中,您尝试将其作为结构指针访问。

使用max(r,x)代替max(&r,x)

编辑:

此外,在max函数中:

printf("the test %f \n", a[i].width); // use %f instead of %d

或者,如果您真的希望它们以%d打印,请使用以下方式:

printf("the test %d \n", (int)a[i].width); // use %d, and typecast float to int

答案 1 :(得分:0)

max内,您尝试使用float格式说明符打印%d值。这将无法正常工作。 printf值的float格式说明符为%f,而不是%d

main内,您正确使用了%f。你为什么突然切换到%d中的max