Pick data from file store in array

This is a discussion on Pick data from file store in array within the C Programming forums, part of the General Programming Boards category; Hey guys. I am wondering say I have a text file like this: Code: Name: xxx Address: == Tel: 000 ...

  1. #1
    Its hard... But im here swgh's Avatar
    Join Date
    Apr 2005
    Location
    England
    Posts
    1,475

    Pick data from file store in array

    Hey guys.

    I am wondering say I have a text file like this:

    Code:
    Name: xxx
    Address: ==
    Tel: 000
    
    Name: x
    Address: =
    Tel 0
    
    etc etc
    And in main() I declare an array to store some data:

    Code:
    char names[ SIZE ][ LENGTH ]
    Is it possible to use either fscanf or fgets to store only the names in
    this array?

    So basically my unsuccessful attempt was:

    Code:
    #include "telebase.h"
    #include <stdio.h>
    #include <stdlib.h>
    
    /*function to initilize data members to a default state*/
    void initilizeDataMembers ( struct TeleBase *tb ) {
    	FILE *inFile;
    
    	inFile = fopen( "telephonelog.txt", "r" );
    
    	if ( inFile != NULL ) {
    		while ( fgets( tb->name, sizeof( tb->name ), inFile ) != NULL ) {
    			printf("%s\n", tb->name );
    		}
    
    		fclose( inFile );
    	}
    
    	else {
    		printf("Cannot open file!\n");
    	}
    }
    Which stores the entire file into the array which I do not want, I just want
    the first line of each one, ( ie the name of each telephone contact ) in
    this one array.

    So far I have only learnt fprintf and fscanf basics when dealing with files, is
    there another C file function that can do this, or am I on the right tracks?

    btw tb is a data struct.

    Any help greatly appriciated
    I'm just trying to be a better person - My Name Is Earl

  2. #2
    and the Hat of Guessing tabstop's Avatar
    Join Date
    Nov 2007
    Posts
    14,185
    You need to read in all the lines, because you can't get from line 1 to line 4 without going through lines 2 and 3. But: the "f" in scanf stands for format. The format you wish to match is the literal "Name: " followed by everything to the new line. So do that:
    Code:
    if (sscanf(buffer, "Name: %[^\n]", array[i]) == 1) {
        //read in, so move i and do whatever else you need to do
    }

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. how do you input data from a file into an array?
    By jorgejags in forum C Programming
    Replies: 5
    Last Post: 11-03-2008, 01:48 PM
  2. Replies: 3
    Last Post: 02-26-2008, 01:12 PM
  3. Can we have vector of vector?
    By ketu1 in forum C++ Programming
    Replies: 24
    Last Post: 01-03-2008, 04:02 AM
  4. Replies: 4
    Last Post: 06-14-2005, 05:45 AM
  5. Binary Search Trees Part III
    By Prelude in forum A Brief History of Cprogramming.com
    Replies: 16
    Last Post: 10-02-2004, 03:00 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21