Solved

scanf float

Posted on 2004-10-18
4
2,688 Views
Last Modified: 2008-03-17
What is the problem with this code:
float fl=0;
scanf("%.2f",&fl);

for some reason fl doesn't get the expected value. as per the spec, it seems that it is legal to use .,- before the f of float. I assume it obeys the same rules as printf. Am I wrong?

Thanks
0
Comment
Question by:doggz
  • 2
4 Comments
 
LVL 45

Expert Comment

by:Kdo
ID: 12341473


You can specify a length qualifier ("%6f"), and even a complete format ("%8.3f").


What are you trying to accomplish?  I'm not sure exactly what ".2f" would represent on a scan.

Kent
0
 
LVL 5

Accepted Solution

by:
van_dy earned 30 total points
ID: 12341804
Please look into the scanf manpage. it clearly specifies as follows:

 "In addition to these flags, there may be an optional maximum field width,
     expressed as a [decimal integer], between the % and the conversion"

you cannot specidy noninteger fiel widths(like .2 or 8.3) with scanf.

hope this help,
van_dy
0
 

Author Comment

by:doggz
ID: 12342504
To Kent - What am I trying to achieve? same as in printf, for printing, enforce formatted input. Suppose one enters 1111.2222, and I the format is %.2f, I want the variable to get the value 1111.22. That is what I expect - I expect fl to get the number as if I was trying to print 1111.2222 with similar format. is that unreasonable?

To van_dy - take a look at page 158 at the table in K&R.
0
 
LVL 45

Assisted Solution

by:Kdo
Kdo earned 20 total points
ID: 12342529

Hi doggz,

You can specifcy the total field length, but not the number of digits past the decimal point (precision).  (Thanks to van_dy for the clarification -- I thought that you could specify the (field length) or (field length and precision) but apparently not.)

char *Str = "1111.2222";
float Value;

  sscanf (str, "%7f", &Value);
  printf ("%10.4f\n", Value);


The scanf() should extract "1111.22" from the string, which should be confirmed by the print:

 1111.2200


Good Luck,
Kent
0

Featured Post

3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
In desperate need of help 8 136
SQL Statment to match two tables in c# 6 79
cURL: stopping a http transaction before it's finished 3 122
Why is compiler in oracle server ? 9 66
This tutorial is posted by Aaron Wojnowski, administrator at SDKExpert.net.  To view more iPhone tutorials, visit www.sdkexpert.net. This is a very simple tutorial on finding the user's current location easily. In this tutorial, you will learn ho…
Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
The goal of this video is to provide viewers with basic examples to understand recursion in the C programming language.
The goal of this video is to provide viewers with basic examples to understand how to create, access, and change arrays in the C programming language.

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question