Defect Report #058
Submission Date: 07 Jun 93
Submittor: Project Editor (P.J. Plauger)
Source: Fred Tydeman
Question 1
What is the minimum value for the maximum number of digits in a number
that can be processed by the scanf family and the strtod
family?
- 509
- 32767
- something else
Parts of the the C Standard that may help answer the question follow.
Subclause 7.9.6.1The fprintf function, page 134, lines 16-18:
Environmental limit. The minimum value for the maximum number of characters produced
by any single conversion shall be 509.
But, note, there is no such environmental limit for fscanf.
Subclause 5.2.4.1 Translation limits, page 13, line 17:
- 509 characters in a logical source line
But, note, there is no execution limit. Subclause 5.2.4.1 Translation
Limits, page 13, line 19:
- 32767 bytes in an object (in a hosted environment only)
Consider the number 1.0 written as .00000...00001e32759 that
is 32767 characters long (including terminator). There is only one
significant digit, the 1. It can be stored in an array of 32767
characters, so it should be possible to pass this string to atof,
strtod, or sscanf and get the value 1.0. Correct?
Response
You are correct; the C Standard imposes no execution limit on the
maximum number of digits in the subject sequence of fscanf conversion
specifiers and the strto* functions, other than on the size
of objects.
Previous Defect Report
< - >
Next Defect Report