Question: What can be done in order to insert arrays into another array. I do happen to have a file which I'm looping through so my goal by now is to take each line within the file and put it into an array (An array of lines). Each line has some data related to a student and his/her tests results, for instance:

> 
> Mark Zuckerberg 10.0 5.5 9.7
> 
> 
> Bill Gates 10.0 1.5 6.7
> 
> 
> 

Example code:

```
FILE* file;
char buffer[256];
char arrayOfLines[500];
char line[256];   

file= fopen("I:\\students.txt","r+");

/* Helps to iterate through each line */
while (fgets(buffer, sizeof(buffer), file)) {
      //some logic to-be-coded
      line = buffer; // just an idea does not work
      arrayOfLines[i] = line; // just an idea does not work
}

```

Expected result:

> 
> arrayOfLines[] = {" Mark Zuckerberg 10.0 5.5 9.7", "Bill Gates 10.0
> 1.5 6.7" };
> 
> 
> 

I certainly know this is somehow easy to achieve but after working with java for a long time it turned out to be a little bit tricky, could someone please help me out with this matter?
Everything works just fine when it comes to iterating and reading. However, when it comes to "playing" with each line it gets creepy. Perhaps I need to change my approach, any help would be welcomed.

Answer: 
Array names decay into pointers when you try to assign them. In order to copy the contents of `buffer` to another `char[]` variable, you'll have to use `memcpy`, `strcpy` or `strncpy`

Apart from that, you *do* have an issue with your `arrayOfLines` variable. It's not an array of lines. It's an array of 500 characters, so it's not even big enough to hold 2 lines, what you need is:

```
char array_of_lines[500][256];

```

And to copy the data, I'd use:

```
memcpy(aray_of_lines[i], buffer, sizeof buffer);//where `i` is the current line, starting at 0

```

It might be worth looking into `malloc`-ing the array of lines here, because this code requires 128,000 bytes of stack space to be available, just to accommodate the `array_of_lines` array, so I'd write:

```
char *array_of_lines[500];
//in the loop:
array_of_lines[i] = malloc(strlen(buffer) + 1);
//check for NULL, and all that
strncpy(array_of_lines[i], buffer, strlen(buffer));

```
```
#include <stdio.h>
#include <string.h>

int main( void ){
    FILE *file = fopen("I:\\students.txt","r");
    char buffer[256*500];
    char *arrayOfLines[500];
    char *line = buffer;
    size_t buf_siz = sizeof(buffer);
    int i=0, n;

    while (fgets(line, buf_siz, file)) {
        char *p = strchr(line, '\n');
        if(p)
            *p = '\0';//remove newline
        else
            p = strchr(line, '\0');
        arrayOfLines[i++] = line;
        buf_siz -= p - line + 1;
        if(p + 1 == buffer + sizeof(buffer))
            break;//buffer full!
        line = p + 1;
    }
    fclose(file);
    n = i;
    for(i=0; i<n; ++i)
        puts(arrayOfLines[i]);
    return 0;
}

```