char (*allFilenames) [9];
Why are there parentheses in this statement?
//filenames will be max 8 + 1 without fileending
Are you SURE of this? Generally, SD file names can have 8 characters, plus the dot, plus 3 characters for the extension plus the NULL. That's more than 9.