Problem with snprintf()
Chris Faylor
cgf@cygnus.com
Tue Aug 8 16:46:00 GMT 2000
On Mon, Aug 07, 2000 at 06:53:50PM +0200, Corinna Vinschen wrote:
>Jonathan Larmour wrote:
>> Here's what C99 says:
>>The snprintf function is equivalent to fprintf, except that the output
>>is written into an array (specified by argument s) rather than to a
>>stream. If n is zero, nothing is written, and s may be a null pointer.
>>Otherwise, output characters beyond the n-1st are discarded rather than
>>being written to the array, and a null character is written at the end
>>of the characters actually written into the array. If copying takes
>>place between objects that overlap, the behavior is undefined.
>>
>>Returns The snprintf function returns the number of characters that
>>would have been written had n been sufficiently large, not counting the
>>terminating null character, or a negative value if an encoding error
>>occurred. Thus, the null-terminated output has been completely written
>>if and only if the returned value is nonnegative and less than n.
>>-=-=-=-=-
>>
>>So snprintf() should always add a terminating \0.
>
>And snprintf() may return -1 only in case of encoding error, not if the
>string exceeds `size'. So that is answered as well, IMO.
So, have we come up with a patch for this behavior?
cgf
More information about the Newlib
mailing list