Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

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

  1. May 11, 2010 #1

    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
  2. jcsd
  3. May 11, 2010 #2
    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.");

    return 0;
  4. May 11, 2010 #3


    User Avatar
    Homework Helper

    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.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook