From: Mark Murray <w.h.oami@example.com>
Subject: Re: Formatted IO - Fortran style or similar.
Date: Mon, 30 Jul 2012 23:12:28 +0100
Date: 2012-07-30T23:12:28+01:00 [thread overview]
Message-ID: <501706ca$0$1151$5b6aafb4@news.zen.co.uk> (raw)
In-Reply-To: <jv5lta$4dn$1@news.ox.ac.uk>
On 30/07/2012 10:59, Ian Clifton wrote:
> I’m not quite sure what facilities you’re after—I don’t know C’s
> printf()/scanf(), but presumably they are quite different from Fortran’s
> format control—but I suspect the answer is going to be “Ada’s approach
> is different” (see below).
The syntax isn't all that important; its the fine-grained method of
specifying output with a format + list_of_variables.
Fortran separates the format from the read/write statements containing
the list of variables, C's printf/scanf put the format string as the
first argument of the function call. With both, quite detailed I/O
lines can be specified with a reduction in function calling.
I like them because of the compactness:
printf("A=%d B=%6.3f C=0x%04X\n" A, B, C);
... rather than multiple calls.
>> I could have sworn I saw a PL/1-style "picture" version of this, but I'm
>> coming round to believing that this was "customer code", not standard
>> library.
>
> Here, you could be thinking about “Edited Output for Decimal types”,
> described in the ARM Appendix F.
Could be, thanks!
>> PS: Is it really the case that put(some_integer,16) will _always_
>> print the '16#9999#' format, and that there is on way _in_the_
>> _standard_library_ of *not* getting the '16#.....#' wrapper?
>> Yes, I know there are ways you can get rid of it (eg with a slice), or
>> by "rolling your own" - alternatives aren't my question here :-).
>
> I believe Ada’s approach is to specify the results of
> put(some_integer,16) sufficiently carefully that you can do such
> post‐processing with the provided string manipulation packages and be
> confident of the final result. In other words, what you are trying to
> avoid ARE the language’s facilities for doing this sort of thing. I ought
> to mention in passing, the Ada.Text_IO packages are a little
> controversial, many dislike them, but I believe they are under‐rated.
If that is the "Ada way", then so be it. :-)
I held back on that method as it felt "wasteful"; why generate
something if you know you don't need it? ("I want XXXX (hexadecimal),
why do I need to generate 16#XXXX# first?")
I suppose that learning a language's idioms are part of learning the
language. Thanks for the help!
M
--
Mark "No Nickname" Murray
Notable nebbish, extreme generalist.
next prev parent reply other threads:[~2012-08-07 7:16 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-30 8:50 Formatted IO - Fortran style or similar Mark Murray
2012-07-30 9:59 ` Ian Clifton
2012-07-30 18:57 ` Michael Rohan
2012-07-30 22:12 ` Mark Murray [this message]
2012-07-31 7:17 ` Dmitry A. Kazakov
[not found] ` <npbe18d3o3gdc2ut41f1codvv6rhfgidr3@invalid.netcom.com>
2012-07-31 11:56 ` Jacob Sparre Andersen
2012-07-31 15:12 ` stefan-lucks
2012-07-31 17:34 ` Adam Beneschan
2012-08-01 6:56 ` stefan-lucks
[not found] ` <be5g18p0gnf2ocdf3hmgjslgnu0jogrh91@invalid.netcom.com>
2012-08-01 6:48 ` stefan-lucks
2012-08-01 8:09 ` Jacob Sparre Andersen
2012-08-01 10:28 ` Georg Bauhaus
2012-08-01 16:28 ` Simon Wright
2012-08-01 19:14 ` Michael Rohan
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox