How to read this file line by line and store contents in an array

  • Thread starter Thread starter missfangula
  • Start date Start date
  • Tags Tags
    Array File Line
AI Thread Summary
To read a file line by line in C and store the contents in an array, you can use the `fgets()` function to read each line into a buffer. Allocate memory for the array using `malloc()` and ensure to handle memory management properly. After storing each line, use `strtok()` to tokenize the lines by space delimiters for further manipulation. It's important to check for successful file opening and handle errors appropriately. This approach allows you to effectively manage file input and string processing in C.
missfangula
Messages
32
Reaction score
0
Hello,

In my computational science class I have the task of taking the following input file and manipulating it.
I have the following input file:

C1 0 0.00 0 000.0 0 000.0
O2 1 1.22 0 000.0 0 000.0
H3 1 1.09 2 120.0 0 000.0
C4 1 1.54 2 120.0 3 180.0
H5 4 1.09 1 110.0 2 000.0
H6 4 1.09 1 110.0 2 120.0
H7 4 1.09 1 110.0 2 -120.0

stored as input.txt. I need to open this file, read each line, and store each line as an element in an array. Is this even possible in C? I am used to Java, where I could have stored each line as a string object, but in C I have no idea.

After that , I need to be able to access each element in this array, open an element, and tokenize it by space delimiter.

Can someone please show me a code example of how this is done? I have spent several days browsing the internet looking for help in how this works, but I have had no such success. I'm really demoralized right now.

Thank you,
miss fangula
 
Physics news on Phys.org
Oh, this is the code I have so far (not much, I know!):

#import <Foundation/Foundation.h>

int main ()
{
FILE* input; //file pointer to input file
FILE* output; //file pointer to output file
input = fopen("input.txt", "r"); //open input file to read
output = fopen("output.txt", "w"); //open output file to write

if (input == NULL)
{
fprintf(output, "Error opening file.");
}













fclose(output);
fclose(input);
return 0;
}
 
If your C++ compiler supports <iostream>, you can use getline() to retrieve lines. There's also a <string> version of getline() if your compiler supports standard template libarary. If this is C and not C++, on a modern PC, you probably have enough ram to be able to allocate a large amount of memory (malloc()), read the entire file into memory, after which you can use memchr() to scan the buffered data for line terminators.
 

Similar threads

Back
Top