Problem - SD file names to a string array (help appreciated)

hello all, XD

Part of my project is to get all the file names on an SD card to be stored in a string array.
Ideally, the array will be of the form array [] = {"file1.txt" , "file2.txt", "file3.txt"}. For the sake of discussion, 3 files names need to be stored in the array. Individual elements of this array will then be passed into another function to access the element's contents on the SD. The files' names can be of standard length i.e 5 characters long + .txt (not preferable).

My code looks as follows:

#include <SD.h>

File root;
String bookselection[3];

void setup()
{

Serial.begin(9600);
pinMode(10, OUTPUT);
SD.begin(10);

  root = SD.open("/");
  filenamestoarray(root, 0,bookselection[]); 
  root.close();

  for (int i = 0; i < 20; i++) // print bookselection
    {
    Serial.println(bookselection[i]);
    Serial.println();
    }
Serial.print("done ");
}

void loop()
{
}


void filenamestoarray(File dir, int numTabs, String bookselection[]){
  
/////////////////////////////////////////////////////////////
//iterates through files on SD - writes file names to array//
///////////////////////////////////////////////////////////// 

char i = 0;
  dir.rewindDirectory(); 
   while(true) {
     File entry =  dir.openNextFile();
         if (! entry) {
         // no more files - exits function
         entry.close();
         return;
         }
     bookselection[i] = entry.name();     
     entry.close(); 
      i++; 
}

and get the following error:

SD_find_files_to_array.ino: In function 'void setup()':
SD_find_files_to_array:14: error: expected primary-expression before ']' token
SD_find_files_to_array.ino: In function 'void filenamestoarray(File, int, String*)':
SD_find_files_to_array:48: error: expected `}' at end of input

I understand that inializing String bookselection[]; to 3 elements is incorrect but I am unable to find alternative ideas to get the array into the form bookselection[] = {"file1.txt" , "file2.txt", "file3.txt"}. I also understand that this is clearly not the only thing im doing wrong too and require help getting this to work. My skills with pointers are a bit rusty but I understand a bit.

I have searched through the forums and the Arduino libraries/tutorials - but I am still finding the use of strings difficult.

Help (especially sample code) would be greatly appreciated!!
Thanks in advance.