Reading from file and adding values to array's Avatar, Join Date: Nov 2007
Newbie Member
Reading from file and adding values to array

I am new to the C/C++

My Program:

int main(int argc, _TCHAR* argv[])

FILE *fp;
char line[1000];
char *CheckPoint[3000];

//Opening a file and reading

fp = fopen("C:\\config.txt","rt");
while(fgets(line, 1000, fp) != NULL)
char datatext[1000];
sscanf (line, "%s", &datatext);
printf ("%s\n", datatext);
CheckPoint[i] = datatext;

//Closing File
return 0;
//Config.txt Data


My Question:

I am able to read the data from the file from the above loop of reading the file
but when i add it to the array the value incrementing the array and assiging it, the values gets changed

first time from the txt file i get 10 and i add to CheckPoint[i] = datatext; where initially i =0, the next loop when the value for the datatext = 20 the initial value get to 20 and also inserts 20 in the second place

Where am i going wrong

Please help me

Last edited by shabbir; 20Nov2007 at 17:33.. Reason: Code block
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
I don't see the i variable being declared as well as incremented and so I think your data is getting changed.
Salem's Avatar, Join Date: Nov 2007
Ambitious contributor
> CheckPoint[i] = datatext;
This is only a pointer, so when datatext is changed next time around the loop, then all the pointers to it will also appear to change as well.

Make CheckPoint a true 2D array of chars, and use strcpy() to copy datatext.

Or you might consider, but that would not be a portable solution (although strdup is very easy to write yourself).'s Avatar, Join Date: Nov 2007
Newbie Member
Thank You Shabbir & Salem

Sorry to post a wrong code for not giving the initilizing the i variable as i have declared in my program

strdup worked out

Thank you once again