I have no explanation for the spaces, but in their example they are skipping them as well and insert the dot manually:
for (uint8_t i = 0; i < 11; i++) { // 8.3 format has 8+3 = 11 letters in it
if (dir.name[i] == ' ')
continue; // dont print any spaces in the name
if (i == 8)
Serial.print('.'); // after the 8th letter, place a dot
Serial.print(dir.name[i]); // print the n'th digit
}
Anyway, I gave my original problem some thought and was now able to solve it without the array.
Many thanks for your time, I've learnt a couple of things.