简体   繁体   中英

Handling user's input

when I input a floating point number (eg. 48.3) the result displayed is 48.00 instead of 48.30 and whenever I try to input string with empty space the program ends immediately. I need help, how to fix this problem?

 int integer;
 char a[50];

 float fnum;
 char b[50];


 printf("Please enter an integer : ");
 scanf("%s",&a);

 integer = atoi(a);

 printf("\nPlease enter a floating-point number : ");
 scanf("%s", &b);

 fnum = atoi(b);

 printf("Output : \n");

 printf("%i + %.2f = %.2f \n", integer,fnum,(integer+fnum));
 printf("%i - %.2f = %.2f \n", integer,fnum,(integer-fnum));
 printf("%i * %.2f = %.2f \n", integer,fnum,(integer*fnum));

You're converting string b into an integer by calling atoi . You want to convert it to a floating point number, so use atof :

fnum = atof(b);

The atoi returns an int. The atof returns a float.

int integer;
char a[50];

float fnum;
char b[50];


printf("Please enter an integer : ");
scanf("%s",&a);

integer = atoi(a);

printf("\nPlease enter a floating-point number : ");
scanf("%s", &b);

fnum = atof(b);

printf("Output : \n");

printf("%d + %.2f = %.2f \n", integer,fnum,(integer+fnum));
printf("%d - %.2f = %.2f \n", integer,fnum,(integer-fnum));
printf("%d * %.2f = %.2f \n", integer,fnum,(integer*fnum));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM