I have the following block of code. The final line is meant to yield the values for X
,Y
and P
values that are input by the user. However it only returns
(0,0,0)
instead of the values given by user. What am I missing?
printf("What is the robot's initial X position? (cm)\n");
scanf("%f",&X);
printf("What is the robot's initial Y position? (cm)\n");
scanf("%f",&Y);
printf("What is the robot's initial angular position? (degrees)\n");
scanf("%f",&P);
printf("The initial position is (%d, %d, %d)\n", X,Y,P);
Assuming X
, Y
and P
are of type double
or float
(input part, scanf()
), you need to use %f
or %lf
format specifier (as required) to print (or scan) the values.
float
or double
, you need to use %f
float
, use %f
, for scanning double, use %lf
.Using wrong type of argument for a particular format specifier isundefined behaviour. %d
expects an int
argument. So, in your case, using %d
for float
or double
type of argument is UB.