Search code examples
cprintfscanfformat-specifiers

printf not yielding input values


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);

Solution

  • 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.

    • For printing float or double, you need to use %f
    • For scanning 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.