[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Combine ascii and binary format (i.e. formatted and unformatted)
- Subject: Re: Combine ascii and binary format (i.e. formatted and unformatted)
- From: Craig Markwardt <craigmnet(at)cow.physics.wisc.edu>
- Date: 14 Apr 2000 16:13:47 -0500
- Newsgroups: comp.lang.idl-pvwave
- Organization: U. Wisc. Madison Physics -- Compact Objects
- References: <38F74DBF.AEDC4EC@Noveltis.fr> <8d7g5i$8p55@news.abbott.com>
- Reply-To: craigmnet(at)cow.physics.wisc.edu
- Xref: news.doit.wisc.edu comp.lang.idl-pvwave:19296
"Vince Hradil" <hradilv@yahoo.com> writes:
> Won't this work?
[ see below ]
I think it won't. The point was that the first number, myInteger, was
printed with formatted I/O, while the data itself was unformatted
binary.
In this situation I believe it's best to dispense with format
statements and do it the hard way. Formatted I/O leaves the file
pointer in an unpredictable position (*before* or *after* the space?),
and there's no efficiency lost when you're reading a few characters.
My suggestion:
myInteger = 0
myBlank = 0B
myArray = dblarr(sizeOfMyArray)
openr, lun, 'filename', /get_lun
readf, lun, myInteger ;; Formatted I/O
point_lun, lun, 0L
repeat readu, lun, myBlank until string(myBlank) EQ ' ' ;; Skip past space
readu, lun, myArray ;; Unformatted I/O
free_lun, lun
This is the first time I have ever used "repeat" by the way.
Craig
>
> myInteger = 0
> myBlank = 0B
> myArray = dblarr(sizeOfMyArray)
>
> openr, lun, 'filename', /get_lun
> readu, lun, myInteger
> readu, lun, myBlank
> readu, lun, myArray
> close, lun
>
> "Nicolas Decoster" <Nicolas.Decoster@Noveltis.fr> wrote in message
> news:38F74DBF.AEDC4EC@Noveltis.fr...
> > Hi !
> >
> > I have (once again) a newbie question.
> >
> > I need to read files I created using C. They have the following format:
> > an ascii integer, followed by a blank space followed (with no new line)
> > by a binary array of double. In C, these files are created like that:
> >
> > fprintf(fileID, "%d ", myInteger);
> > fwrite(myArray, sizeof(double), sizeOfMyArray, fileID);
> >
> > Does someone know how I can read such files with IDL ? I tried, but I
> > can't figure how to specify the format string to read my integer, the
> > space after it and nothing else, so that I can get my array with a
> > simple readu.
> >
> > Thanks for any help.
> >
> > Nicolas.
> >
> > --
> > Tél. : 00 (33) 5 62 88 11 16
> > Fax : 00 (33) 5 62 88 11 12
> > Nicolas.Decoster@Noveltis.fr
> >
> > Noveltis
> > Parc Technologique du Canal
> > 2, avenue de l'Europe
> > 31520 Ramonville Saint Agne - France
>
>
--
--------------------------------------------------------------------------
Craig B. Markwardt, Ph.D. EMAIL: craigmnet@cow.physics.wisc.edu
Astrophysics, IDL, Finance, Derivatives | Remove "net" for better response
--------------------------------------------------------------------------