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

AI Thread Summary
The discussion focuses on reading a formatted text file into a dynamically allocated 2D array in C. The user successfully reads the first integer 'n' to determine the array size but struggles with populating the array while skipping this initial value. Solutions involve using fscanf correctly, ensuring the ampersand is included, and addressing issues with the feof function to prevent infinite loops. The thread highlights the importance of correctly managing file input and array assignment to avoid common pitfalls. Ultimately, the user resolves their issue with guidance from others in the discussion.
NDiggity
Messages
53
Reaction score
0

Homework Statement


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 separated 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
 
Physics news on Phys.org
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.
 
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 by a moderator:
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?
 
I figured out my problem. I forgot the ampersand in front of the array in the fscanf function.
 
Last edited:
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)
 
Yes, I did fix the feof function. I ran it once and got an infinite loop before realizing that! Thanks for your help.
 

Similar threads

Back
Top