Version franaise
Home About Download Resources Contact us
Browse thread
precision not working properly for strings in Printf?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Quc_Peyrot <chojin@l...>
Subject: Re: [Caml-list] precision not working properly for strings in Printf?

On Jun 27, 2007, at 5:38 AM, Jonathan Bryant wrote:

>
> On Jun 26, 2007, at 11:18 PM, Quc Peyrot wrote:
>
>> It seems that the precision field doesn't work properly with the  
>> "s" type in Printf.printf:
>
> It does work properly.  It's just not working the way you're  
> expecting it to work.

I was just expecting it to work like the printf from the glibc:

s      If  no  l  modifier  is  present:  The  const char * argument is
	      expected to be a pointer to an array of character type  (pointer
	      to  a string).  Characters from the array are written up to (but
	      not including) a terminating NUL character; if  a  precision  is
	      specified,  no more than the number specified are written.  If a
	      precision is given, no null character need be  present;  if  the
	      precision  is  not specified, or is greater than the size of the
	      array, the array must contain a terminating NUL character.

>> # Printf.printf "%.2s" "qwerty";;
>> qwerty- : unit = ()
>>
>> This should print "qw"
>
> No it shouldn't.  The width/precision specifier guarantees a  
> _minimum_ length for strings, not an absolute length.  From the  
> docs for Printf:

As said above, this is not how printf is working in the glibc (at  
least on linux and Mac OS X). Any clue why the same convention has  
not been followed?

-- 
Best Regards,
Quc