home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / lang / c / 16183 < prev    next >
Encoding:
Internet Message Format  |  1992-11-08  |  2.1 KB

  1. Path: sparky!uunet!europa.asd.contel.com!darwin.sura.net!zaphod.mps.ohio-state.edu!rpi!batcomputer!munnari.oz.au!metro!sequoia!acacia!mgream
  2. From: mgream@acacia (Matthew Gream)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: Need help reading floats from file
  5. Date: 8 Nov 1992 22:09:21 GMT
  6. Organization: University of Technology, Sydney
  7. Lines: 52
  8. Message-ID: <1dk36hINNpq3@sequoia.ccsd.uts.EDU.AU>
  9. References: <cee1.721108743@Ra.MsState.Edu>
  10. NNTP-Posting-Host: acacia.ccsd.uts.edu.au
  11. X-Newsreader: Tin 1.1 PL5
  12.  
  13. Charles Evans (cee1@Ra.MsState.Edu) wrote:
  14.  
  15. : Ok, in getting data for an experiment to look at, I have
  16. : 200 .xx floating point number, just a decimal point and 2 decimal
  17. : places, put in 20 x 20 in a data file.
  18. : How can I read them into an array.. all i could think of was do 
  19. : a HUGE fgets/sscanf thing with "%f %f ... %f".. 20 times and put into
  20. : 20 parts of an array like : value[i++][j] on an on until i=20 then
  21. : reset i and increment j..
  22. : but i get weird errors from dos and qemm.. something is wrong.
  23. : why cant i (i can in basic :)) just keep reading in a floating point number
  24. : or read it in as a small string until the first whitespace?
  25. : or something. thanks
  26. : data file looks like:
  27. : .11 .33 .00 .......
  28. : .23 .45 .23 .......
  29. :  .   .   .
  30. :  .   .   .
  31. : 20 x 20
  32.  
  33.  Try using strtok() and atof(), for example, your code could look
  34. something like:
  35.  
  36.    FILE *FILE_handle;
  37.    char Buffer[MAXBUFLEN];
  38.    int  row, column;
  39.    double big_array[MAX_ROWS][MAX_COLUMNS];
  40.  
  41.    row = 0;
  42.    while( fgets(Buffer,sizeof(Buffer),FILE_handle) && (row < MAX_ROWS) ) {
  43.       register char *char_ptr;
  44.       if(! (char_ptr = strtok(Buffer," \t\r\n")) ) 
  45.     continue;
  46.       column = 0;
  47.       while( char_ptr = strtok(NULL," \t\r\n") )
  48.           big_array[row][column++] = atof(char_ptr);
  49.       row++;
  50.    }
  51.  
  52.  That may or may not be what you want, but it should give you some
  53. good ideas. The reason qemm is probably barfing is that your passing
  54. an incorrect pointer (or something to that effect) in sscanf.
  55.  
  56. Matthew.
  57. --
  58. M.Gream@uts.EDU.AU - Matthew Gream - 'Edges have holes next to them .. '
  59.