Browse thread
precision not working properly for strings in Printf?
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Quôc_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, Quôc 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, Quôc