Reading Scientific notation from file and storing in array


 
Thread Tools Search this Thread
Top Forums Programming Reading Scientific notation from file and storing in array
# 1  
Old 12-16-2011
Reading Scientific notation from file and storing in array

Hi,

I am trying to read a set of numbers that are in scientific notation into a file so I can do some math on them, but when I display the array contents the numbers aren't the same as the numbers in the file.

Could someone explain why? Thanks.
Code:
int main()
{

    double fArray[36];
    int i=0;
    FILE *fptr;

    fptr = fopen ("C:\\temp.txt", "r");

    if (fptr == NULL)

        printf ("Can't Find File to open\n");

    else
    {
        for (i=0; i <= 36; i++)
            {
            while (fscanf(fptr, "%lf", &fArray[i]) != EOF);
            printf ("%e\n", &fArray[i]);
            }
    }

return 0;
}

Text File Contents
Code:
1.973500e-08
1.972500e-08
1.971520e-08
1.975500e-08
1.960500e-08
1.972500e-08
1.736000e-07
1.735500e-07
1.736600e-07
1.735000e-07
1.735000e-07
1.735500e-07
1.291000e-06
1.288000e-06
1.291090e-06
1.290500e-06
1.289500e-06
1.290500e-06
9.856000e-06
9.823500e-06
9.845830e-06
9.837500e-06
9.837500e-06
9.837500e-06
8.102000e-05
8.068000e-05
8.086240e-05
8.094500e-05
8.086000e-05
8.086240e-05
6.591000e-04
6.597000e-04
6.611440e-04
6.634500e-04
6.616000e-04
6.611440e-04

Numbers read into array
Code:
6.951149e-308
6.951183e-308
6.951217e-308
6.951251e-308
6.951285e-308
6.951319e-308
6.951353e-308
6.951387e-308
6.951421e-308
6.951455e-308
6.951488e-308
6.951522e-308
6.951556e-308
6.951590e-308
6.951624e-308
6.951658e-308
6.951692e-308
6.951726e-308
6.951760e-308
6.951794e-308
6.951828e-308
6.951862e-308
6.951896e-308
6.951930e-308
6.951964e-308
6.951998e-308
6.952032e-308
6.952066e-308
6.952100e-308
6.952134e-308
6.952167e-308
6.952201e-308
6.952235e-308
6.952269e-308
6.952303e-308
6.952337e-308
6.952371e-308

Moderator's Comments:
Mod Comment Use code tags, ty. See PM

Last edited by zaxxon; 12-16-2011 at 03:14 PM.. Reason: code tags
# 2  
Old 12-16-2011
Your printf is wrong:

Code:
printf ("%e\n", &fArray[i]);

sscanf needs a pointer to the variable since it overwrites it. printf only expects the value itself. No & is necessary.
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 12-16-2011
Thanks for your help I got it.

Last edited by Filter500; 12-16-2011 at 03:36 PM.. Reason: Edit
# 4  
Old 12-16-2011
Maybe it's this:

Code:
 while (fscanf(fptr, "%lf", &fArray[i]) != EOF);

You have a semi colon after the while, so you're reading in every line from the file until EOF, then looping and doing it again (but it's already at EOF). You probably need to rethink how you're approaching this loop....

Code:
int main()
{

    double fArray[36];
    int i=0;
    FILE *fptr;

    fptr = fopen ("C:\\temp.txt", "r");

    if (fptr == NULL)

        printf ("Can't Find File to open\n");

    else
    {
        for (i=0; i <= 36; i++)
            {
            if (fscanf(fptr, "%lf", &fArray[i]) == EOF) break;  /* stop if we ran out of values */
            printf ("%le\n", fArray[i]);  /* use le since you're printing a double not a float */
            }
    }

return 0;
}

This User Gave Thanks to DreamWarrior For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Print multiple columns in scientific notation

Hi everybody, I have file 1 with 15 columns, I want to change the formatting of the numbers of columns 10,11 and 12 in the scientific notation. I used the Following script: awk '{print $10}' file1.dat | awk '{printf "%.2e\n", $1}' > file2.dat awk '{print $11}' file1.dat | awk '{printf... (7 Replies)
Discussion started by: supernono06
7 Replies

2. Shell Programming and Scripting

Help with filter result (scientific notation) by using awk

Input file: data1 0.05 data2 1e-14 data1 1e-330 data2 1e-14 data5 2e-60 data5 2e-150 data1 4e-9 Desired output: data2 1e-14 data1 1e-330 data2 1e-14 data5 2e-60 data5 2e-150 I would like to filter out those result that column 2 is less than 1e-10. Command try: (1 Reply)
Discussion started by: cpp_beginner
1 Replies

3. Shell Programming and Scripting

Help w/ Reading Matrix & Storing in dynamic array

First of I would just like to state that I am not looking for you guys to just do my work for me, I do want to learn and actually understand everything that is happening. Hey all, I am having trouble on this. What I need to do is... Write an executable C file that will take a text file (not a... (8 Replies)
Discussion started by: innvert
8 Replies

4. Shell Programming and Scripting

Perl: scientific notation to decimal notation

hello folks, I have few values in a log which are in scientific notation. I am trying to convert into actual decimal format or integer but couldn't able to convert. Values in scientific notation: 1.1662986666666665E-4 2.0946799999999998E-4 3.0741333333333333E-6 5.599999999999999E-7... (2 Replies)
Discussion started by: scriptscript
2 Replies

5. Shell Programming and Scripting

Converting from scientific notation to normal

Hi everyone, I need to convert some numbers that are written in scientific notation to normal notation. Here is a sample line from my data file; "1",1,-1,0,0,502,0,0.00000000000E+00,0.00000000000E+00,0.35591163544E+03,0.35591163548E+03,0.50400001928E-02,0.,-1. first of all, my data file... (4 Replies)
Discussion started by: hayreter
4 Replies

6. Shell Programming and Scripting

Rounding scientific notation

Hi Friends, I have following 50,000 records in .txt file. I need to round field 3, 4, & 5 to 3 decimal places. 11|A123|-2.64216408856E01|3.64216408856E01|4.64216408856E-01 11|A123|0|-5.64216408856E01|0 11|A123|0|0|0 11|A123|-99999999|-99999999|-99999999... (4 Replies)
Discussion started by: ppat7046
4 Replies

7. UNIX for Dummies Questions & Answers

Conversion of scientific notation

Hello All, Hope all is well, Suppose I have a program that extracted data into a file called: progcros.in. I attached the file but I renamed it progcros.txt. I think that my mess up the column alignment. Anyways, in several columns there are numbers listed, however the numbers... (4 Replies)
Discussion started by: gingburg
4 Replies

8. Shell Programming and Scripting

Bash Scientific Notation

Hello there, I have a script that must be written in bash that has to deal with reading in values from a file (in scientific notation), and requires executing some mathematical operations with them. What is the easiest way to go about doing this/converting it to float to use | bc, etc.? ... (7 Replies)
Discussion started by: amit_57
7 Replies

9. UNIX for Dummies Questions & Answers

How to add/multiply numbers with scientific notation (2.343e-5)

Hi, I'm need to do some addition and multiplication of scientific nottaion numbers, in the form 34.23423e-10 for example. I was echoing the list of numbers to stdout, then using bc -l, then I find that this does not seem to work for numbers with exponential notation. Could someone help me out... (1 Reply)
Discussion started by: chugger06
1 Replies

10. Shell Programming and Scripting

How to Convert scientific notation to normal ?

Hell friends, I wrote a script gets the summation of particular column using awk. The awk output is given in scientific notation. How do I convert the scientific notation to normal. My awk syntax : awk '{sum += $2} END { printf sum }' temprep.txt Out put is like 1.5365e+07 I want it as... (2 Replies)
Discussion started by: maheshsri
2 Replies
Login or Register to Ask a Question