Wie kann ich meinen Code vereinfachen?

SvenM:
Aber mein Problem ist das ich wenn ich meinen Dateinamen gegen eine Varible (sting) autauschen möchte die Anzeige bekomme das nur eine Char-Array passt.

Den Datentyp "String" als Objekt vergisst Du am besten ganz schnell. Für die Programmierung von Mikrocontrolllern völlig ungeeignet. Am besten nur char-Arrrays verwenden.

SvenM:
Die bekomme ich aber noch nicht mit passendem Inhalt befüllt auf aufgerufen.

???

An ein char-Array kannst Du mit der Funktion strcpy einen anderen String zuweisen. Und wenn Du einen char-Pointer als Variable einer Funktion deklarierst, kannst Du auch Konstanten als Parameter übergeben, und Funktionen aufrufen mit:
printMyFile("Datei.txt");

Wobei die Deklaration des Funktionsrumpfes dann lauten würde:

void printMyFile(char* fn)
{
// hier der auszuführende Code der Funktion
}