Hello,
I am trying to write some code that will open a file, read its content line by line and store each of these lines into an array.
First I open the file and count the number of lines, each of the lines is of a fixed length so I simply do this :
char buf2[LINE_LENGTH];
int in2 = open("toSend2", O_RDONLY);
int number_of_lines = 0;
for (;;)
{
char* p2 = buf2;
int count = read (in2, p2, LINE_LENGTH);
if (count < 0)
{
printf("ERROR");
break;
}
if (count == 0) break;
number_of_lines++;
printf("count: %d \n",count);
printf("File 2 line : %s", p2);
printf("\n");
}
close (in2);
So far, this works well, number_of_lines is indeed the number of lines in the file "toSend2" and each of my printf are the lines contained in that file.
Now with the number of lines, I create an array of strings and then I basically go through the whole file again but this time, I would like to store each of the lines in the array (there's probably a better way to find out the number of lines in a file, but everything that I tried has failed !)
char * array[number_of_lines];
int b=0;
int in3=0;
in3 = open("toSend2", O_RDONLY);
for (;;)
{
char* p3 = buf3;
int count = read (in2, p3, LINE_LENGTH);
if (count < 0)
{
printf("ERRORRRRRR");
break;
}
if (count == 0) break;
array[b] = p3;
b++;
printf("count: %d \n",count);
printf("FILE 2 LINEEEEEE : %s", p3);
printf("\n");
}
close(in3);
This, of course, doesn't work : each of my printf are the right line plus the last line of the file, for example, the first printf would be :
FILE 2 LINEEEEEEE : "1st line of the file" "last line of the file"
And after this for loop, when I trace the contents of my array, every item in it is simply the last line of the file. I think this is because I simply put the same pointer (pointing to a different line at that moment) in the array each time, but in the end it will point to the last line, therefore everything will be the last line.
How would I solve my problem ?
p.s.: I just started C, so please do not assume I know even basic things about it :(