At 01:51 22.08.2002, Melvyn Sopacua wrote:
>At 01:25 22-8-2002, Marcus B�rger wrote:
>
>>At 00:56 22.08.2002, you wrote:
>>>
>>>Is this what you are looking for?
>>>
>>>#include <stdio.h>
>>>
>>>int main()
>>>{
>>> double f;
>>> char *result;
>>> size_t buf_len=1024;
>>>
>>> result = (char *) malloc(buf_len+1);
>>> f = -.3333333333333333;
>>> if(snprintf(result, buf_len, "Result is: %f and precision 12:
>>> %.12f\n", f, f) < 1)
>>> {
>>> fprintf(stderr, "Error\n");
>>> }
>>> else
>>> {
>>> printf("%s", result);
>>> }
>>>}
>>>
>>>$ ./snprintf
>>>Result is: -0.333333 and precision 12: -0.333333333333
>>
>>No there are more important issues in compliancy .
>>Especially there are libraries out which do not check for the length
>>parameter (i already have the code needed for that)
>
>Ok.
>
>>The code for you provided does not work because you only
>>check for the number of characters written. Instead you must
>>check for the '0' in front of the decimal point. E.g:
>>
>>char buf[10];
>>if (strcmp("0.1", snprintf(buf, sizeof(buf), "%.f", .1))) ...
>>
>>Besides the return value is different in the libraries, too. Some return
>>the length actually written but C99 requires to return the number of
>>characters that could have been written if buffer was large enough.
>
>Then this one is definetely not C99 compliant. Changed the test to:
>#include <stdio.h>
>
>int main()
>{
> char buf[5];
> int written;
>
> written = snprintf(buf, sizeof(buf), "%f", .111);
> if (strcmp("0.1", buf)==0 && written == 6)
> {
> printf("OK\n");
> }
> else
> {
> printf("Not ok: %s (%i)\n", buf, written);
> }
>}
>
>Result:
>Not ok: 0.11 (5)
How is this, did you mean 3 * '1'? The function is supposed to return the
number of
characters that could have been written (excluding the terminating \0).
>Additionally - with "%.f" it rounds to integer zero.
>
>Result:
>Not ok: 0 (1)
>
A quick look in the docs says when no precision is given 6 is assumed.
So i would expect "0.111"
>Met vriendelijke groeten / With kind regards,
>
>Webmaster IDG.nl
>Melvyn Sopacua
>
>
>--
>PHP Development Mailing List <http://www.php.net/>
>To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php