while ((n = rdfile.fgets(line, sizeof(line))) > 0) {
if(i<10)temp[i].packetBuffer = line;
Serial.println( temp[i].packetBuffer ); // [b]here there is data[/b]
i++;
}
This makes temp[ i ].packetBuffer point to line (not a copy of line).
Apparently, there are less than 10 lines in your file, so line is empty when rdfile.fgets() gets to the end of file.
Then, you print out the data pointer to be all 10 pointers, some of which are NULL and the rest of which point to the same place.
You need to change
if(i<10)temp[i].packetBuffer = line;
to
if(i<10)temp[i].packetBuffer = strdup(line);
to make packetBuffer point to a copy of the data.
Each packetBuffer pointer will then point to a different location.