Thread: Reading strings from a file

  1. #1
    Registered User Capulet's Avatar
    Join Date
    Dec 2002

    Unhappy Reading strings from a file

    I'm quite new to C and I'm a wee bit stuck here and would be very grateful for any help or advice you guys could share.
    Im trying to open a text file and read a string into an array but I don't know if my syntax is wrong or it's just bad programming. Heres the code so far:
     /* Include Header Files */
    #include <stdio.h>
    #include <stdlib.h>
    /* Define Symboli constants */
    /* Type Declerations */
    typedef struct 
    	char name[25];
    	char country[25];
    	int age;
    	float finalScore;
    	float judgesScore[5];	
    /* Function Prototypes */
    double GetReal(void);
    int GetInteger(void);
    /* Global Variables */
    FILE *fptr;      //Defines a file pointer
    /* Main Funtion */
    void main(void)
    	int i;
    	char fileName[30];
    	gymnast competitors[15];
    	puts("Please enter the file name with the data");
            fptr = fopen("fileName", "r");  //Opens the data file that was inputd 
    	if( fptr == 0)
    		puts("An error occured when opening the file ");
    		exit(1);          //Cheacks the file is valid
    	for(i = 0; i <=15; i++)
    	competitors[i].name = fgets(fptr);
    Please help I'm getting really sick of my own silly mistakes and lack of knowledge

    Cheers Gav

  2. #2
    Code Goddess Prelude's Avatar
    Join Date
    Sep 2001
    >void main(void)
    main returns an int.

    >fptr = fopen("fileName", "r");
    This tries to open the file called "fileName", not the string contained in the variable fileName. Change it to this:

    fptr = fopen(fileName, "r");

    fgets takes three arguments, the array to assign the string to, the size of the array, and the file to read from:

    fgets(competitors[i].name, 25, fptr);

    My best code is written with the delete key.

  3. #3
    Registered User Capulet's Avatar
    Join Date
    Dec 2002

    Thumbs up

    Cheers your the best
    I'm off to try that just now.

    Thanks again

  4. #4
    Registered User Capulet's Avatar
    Join Date
    Dec 2002


    I works perfectly!!
    I can't thank you enough Prelude
    I'm very happy now

    Cheers Gavo

  5. #5
    End Of Line Hammer's Avatar
    Join Date
    Apr 2002
    >>for(i = 0; i <=15; i++)
    And another bug.... this loop iterates 16 times, whereas the competitors array has only 15 elements. You will therefore be writing to memory outside of the array when you do this on the last iteration:
    >fgets(competitors[i].name, 25, fptr);

    So, make it
    >>for(i = 0; i <15; i++)

    Remember, you access arrays from 0 to n-1.
    When all else fails, read the instructions.
    If you're posting code, use code tags: [code] /* insert code here */ [/code]

  6. #6
    Registered User Capulet's Avatar
    Join Date
    Dec 2002
    Cheers, I saw this bug when I was running my full code.
    Thanks for the help though (I need it )


  7. #7
    Registered User
    Join Date
    Sep 2002

    dont get disheartened

    hi man,

    dont ever get disheartened studying c . it's not easy initially

    study slowly without getting disheartened look out for the concepts.

    also do log in to this site and observe other people's problem sot
    that u could

    solve them and thereby learn



  8. #8
    Registered User Capulet's Avatar
    Join Date
    Dec 2002


    Thanks, I will try to help anyone I can.
    I've done some java before so it's not too hard but some of the ideas in C are a bit different.
    I'm constantly trying to learn new things and it looks like the people here are really good and don't mind helping us beginners.

    C u Gavo

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Help with reading strings from a file
    By ldcel in forum C Programming
    Replies: 3
    Last Post: 12-01-2007, 01:31 AM
  2. Dikumud
    By maxorator in forum C++ Programming
    Replies: 1
    Last Post: 10-01-2005, 06:39 AM
  3. Simple File encryption
    By caroundw5h in forum C Programming
    Replies: 2
    Last Post: 10-13-2004, 10:51 PM
  4. Unknown Memory Leak in Init() Function
    By CodeHacker in forum Windows Programming
    Replies: 3
    Last Post: 07-09-2004, 09:54 AM
  5. simulate Grep command in Unix using C
    By laxmi in forum C Programming
    Replies: 6
    Last Post: 05-10-2002, 04:10 PM