Re: Most elegant way to read to allocatable array?



yair999@xxxxxxxxx wrote:
Richard Maine wrote:

Yes, I saw the emphasis on the "might" part. To elaborate on it, the use of a
plain "i" (without a field width) is nonstandard. Some compilers accept it.

Well, my Intel Visual Fortran 9.1 accepted it during compilation, but
running it yielded:

forrtl: severe (64): input conversion error, unit 20, file C:\kuku.txt


OK. You might be able to do this:

Initialize n (the element count) to 0.

Read a character without advancing. If the character is a decimal digit, multiply n by 10, add the numeric value of the digit you just read, and do this again.

If the character is a space, allocate an array of size n, read it free form, and you're done, unless you have bad input data somewhere.

If the character is not a space, you have bad input data right here.

But you wanted elegance...

You might be able to hide the alpha to binary conversion in a function to which you could pass the logical unit number of your input file:

n = read_int_with_no_space(20) [I don't know if underscores are OK]
allocate(A(n))
read(20, *) A

To my knowledge, converting a decimal digit character ('0' through '9') to its numeric value (0 through 9) is relatively simple:

ichar(c) - ichar('0')

This should work with both ASCII and EBCDIC.

Louis
.



Relevant Pages

  • Re: FTP Question
    ... 200 SITE command was accepted ... I suspect that when doing a MBCS conversion, ... input data into lines and convert them one at a time. ... If the input buffer ends with an incomplete character or shift sequence, ...
    (bit.listserv.ibm-main)
  • Re: what if (f)printf returns EINTR ?
    ... vsnprintf - formatted output conversion ... int fprintf; ... write to the character string str. ...
    (comp.unix.programmer)
  • Proposal: String::Format::General
    ... It provides format string parsing and output assembly, you provide the code that implements the individual conversion characters. ... Format syntax is kind of a cross between sprintf and strftime, but how close it is to each of these depends on the semantics implemented by the user. ... Note that the following is pre-alpha documentation; the interface to the output conversion code has changed since yesterday, ... conversion character, and contain a number of optional fields which may ...
    (comp.lang.perl.modules)
  • Re: question abt fscanf
    ... >I belive tht data in file is stored as ascii character constants i.e ... The scanf engine obeys the directives given in the format string. ... introduces a conversion, the 'l' modifier, and the 'd' conversion ... and convert a "long int" rather than a plain int, ...
    (comp.lang.c)
  • Re: New utf8string design may make UTF-8 the superior encoding
    ... A flag value of Zero is assigned to BytePerCodepoint ... likely to be four bytes, plus at least one byte for the character itself, ... stop focussing on such silly concepts as conversion time mattering in the ... that everyone can write scripts in their native language character set. ...
    (microsoft.public.vc.mfc)