1. Not finding help here? Sign up for a free 30min tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Help Reading A .txt File Into A 2D Array In C

  1. Jan 30, 2008 #1
    1. The problem statement, all variables and given/known data
    The program is to read in a file full of numbers formatted like this: The first line contains a single int n. Following this line, there will be n lines with n ints each seperated by whitespace.

    So I have asked the user for a file path and read in the first number ('n') which tells me how big the array I need to make should be, and created a dynamically allocated 2d array with the dimensions nxn which is what we are supposed to do.

    Then, I need to make a copy of this file into the dynamically allocated array. Then I need to check whether the file contains a magic array, meaning the sum of every row and column is identical, and report to the user where it is.

    My problem is making a copy into my 2d array. I'm using fscanf with for loops to read in each value, but that initial int('n') at the top of the file screws it up. Is there any way I can get it to skip this number when it reads this in, because it screws up the contents of the array.

    Here is an example of the file I need to copy:
    3
    1 2 3
    3 2 1
    2 1 3
     
  2. jcsd
  3. Jan 31, 2008 #2

    NoTime

    User Avatar
    Science Advisor
    Homework Helper

    If you managed to allocate the dynamic array correctly then you did the step you are looking for.
    The problem seems to be you are undoing that step.
     
  4. Jan 31, 2008 #3
    I allocated the array but then I need to fill it with the values contained in the file which is the step I'm having trouble with. Here is the loop I made and then assigning the array the values contained in the file, except I want to skip that very first number in the file, which I don't know how to do.
    http://rafb.net/p/ta7PNj72.html
     
    Last edited: Jan 31, 2008
  5. Jan 31, 2008 #4

    NoTime

    User Avatar
    Science Advisor
    Homework Helper

    How did you get the value for 'size' in the first place?
    Why does the second loop not read in the same record over and over?
     
  6. Jan 31, 2008 #5
    I figured out my problem. I forgot the ampersand in front of the array in the fscanf function.
     
    Last edited: Jan 31, 2008
  7. Jan 31, 2008 #6

    NoTime

    User Avatar
    Science Advisor
    Homework Helper

    Ok good.
    Initially from your description I thought you were inadvertently closing infile and reopening it.
    That would restart the stream back to the first data element "3".
    Incidentally did you fix the feof test too?
    My man page shows it should be (feof(infile) == 0)
     
  8. Feb 2, 2008 #7
    Yes, I did fix the feof function. I ran it once and got an infinite loop before realizing that! Thanks for your help.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Help Reading A .txt File Into A 2D Array In C
Loading...