I'm actually totally stuck I don't understand the behavior of this function:
#include <stdio.h>
typedef struct s_resolution
{
   int x;
   int y; 
   float fx;
   float fy;
} t_resolution;
typedef struct s_pixel_info
{
    int tablen;
    t_resolution resolution;
    char name;
    int line;
    int pos_suite[6];
    int suite[6];
} t_pixel_info;
void get_proportion_ratio(t_pixel_info DataB, t_pixel_info pix_info,
                           t_resolution *proportion)
{
    proportion->fx = (float)(DataB.resolution.x / pix_info.resolution.x);
    //I also tried without the cast
    proportion->y = (int)(DataB.resolution.y / pix_info.resolution.y * 100);
    //if (proportion->y != 100)
    printf("%d | %d | %d\n",proportion->y, DataB.resolution.y, pix_info.resolution.y);
}
int main()
{
  t_pixel_info DataB;
  t_pixel_info pix_info;
  t_resolution proportion;
  DataB.resolution.x = 5;
  pix_info.resolution.x = 10;
  DataB.resolution.y = 5;
  pix_info.resolution.y = 10;
  get_proportion_ratio(DataB, pix_info, &proportion);
}
DataB.resolution.y, pix_info.resolution.y and proportion->y are all Int type.
My problem is that I have this result:
0 | 5 | 10
The operation only works when the result is 100... I must be missing something obvious but I've no idea what.
 
     
    