l i n u x - u s e r s - g r o u p - o f - d a v i s
Next Meeting:
July 7: Social gathering
Next Installfest:
Latest News:
Jun. 14: June LUGOD meeting cancelled
Page last updated:
2008 Mar 20 13:01

The following is an archive of a post made to our 'vox-tech mailing list' by one of its subscribers.

Report this post as spam:

(Enter your email address)
Re: [vox-tech] c code question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [vox-tech] c code question

On Thursday 20 March 2008 11:55, Carl Boettiger wrote:
> Hi,
> This isn't a linux question directly but I'm going to abuse the
> generosity and knowledge on this list and ask anyway:
> I'm running a c code where I'd like to print out data to a file in a
> matrix form.  I run a loop that fills in each entry of a column, which
> I print to a file fprintf(file, "%.5e\n", variable). When the loop
> starts again, I'd like to print the next set in an adjacent column,
> rather than under the existing data.  (currently I import the file
> into matlab and use reshape to convert the long vector into a matrix,
> but this doesn't work if the vectors are of different lengths).  Hope
> that made sense.  Any ideas?  Thanks!
> -Carl
You pretty much have to write all the columns in a row at one time.
It is possible to rewind a file, of course, but since each record
would be getting longer on each pass this approach would get real ugly
real fast.
A number of questions come up. Is the size of the matrix fixed
or variable? Is it a small number or could it be very large?
If the size is small and fixed, just change the loop to loop over
rows and change the fprintf to write the proper number of  columns.

But now that I have had 5 minutes to think, I would suggest the
     outer loop over the rows
     inner loop over the columns
inside the inner loop, assemble the record by appending to a string
after exiting the inner loop but still in the outer loop, write the string
to the file
This should work even for very large values of matrix size.

Richard Harke
vox-tech mailing list

LUGOD Group on LinkedIn
Sign up for LUGOD event announcements
Your email address:
LUGOD Group on Facebook
'Like' LUGOD on Facebook:

Hosting provided by:
Sunset Systems
Sunset Systems offers preconfigured Linux systems, remote system administration and custom software development.

LUGOD: Linux Users' Group of Davis
PO Box 2082, Davis, CA 95617
Contact Us

LUGOD is a 501(c)7 non-profit organization
based in Davis, California
and serving the Sacramento area.
"Linux" is a trademark of Linus Torvalds.

Sponsored in part by:
EDGE Tech Corp.
For donating some give-aways for our meetings.