After running the following code 6 times and for different values of number, I get :
number = 908
str = 908.000000
check = 10
number = 98.7
str = 98.699997
check = 9
number = 09870.123
str = 9870.123047
check = 11
number = how
str = 0.000000
check = 8
number = hi
str = 0.000000
check = 8
number = 0
str = 0.000000
check = 8
Why do I get random values for invalid floats instead of a negative number as specified on the man page? And how can I overcome this and properly check error?
Code:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
do
{
char str[20];
float number;
printf("Enter a number: ");
scanf("%f",&number);
int check = sprintf(str,"%f",number);
//Check for error
if (check<0)
{
printf("Error occured\n");
exit(EXIT_FAILURE);
}
printf("You entered: %s\n",str);
//Reveal check
printf("sprintf returned %d\n",check);
getch(); //halt
}while (1);
return 0;
}