Probleme beim Öffnen einer Datei auf einem SD-Kartenleser

TConnect:
Nur mal der Vollständigkeit halber: Wie hätte ich es denn machen müssen, wenn ich nicht snprintf() nutzen würde?

Viele Möglichkeiten zum Zusammenbasteln des Strings. Zum Beispiel:

  char filename[13]="gpslg";
  int number=7;
  if (number<100) strcat(filename,"0");
  if (number<10) strcat(filename,"0");
  itoa(number,&filename[strlen(filename)],10);
  strcat(filename,".log");
  Serial.println(filename);

Du müßtest Dir auch mal über den Unterschied zwischen "char" und "char array" klarwerden.

Ein einzelnes Zeichen ist ein "char" und wird als Konstante zwischen EINZELNE HOCHKOMMAS gesetzt. Zum Beispiel:

char c='x';

Ein char-Array hat eine bestimmte Größe (Anzahl Zeichen plus eins extra als "Stringende-Zeichen") und wird als Konstante zwischen DOPPELTE HOCHKOMMAS gesetzt:

 char filename[13]="gpslg";  // String definiert für Maximallänge 12 und abschließendes Nullzeichen

Das abschließende Nullzeichen in Stringkonstanten wird automatisch eingefügt, das braucht nicht geschrieben werden.

Aber ein char-Array ("C-String") ist eben etwas grundlegend anderes als ein "char".
Insbesondere kannst Du chars mit dem Pluszeichen addieren:

  char Buchstabe='A'+1;

Das ergibt den Buchstaben 'B', weil 'B' um genau eine Stelle hinter 'A' im ASCII-Alphabet kommt.
Aber ein "char plus irgendwas" ergibt immer nur einen einzelnen char und niemals einen String.

Um char-Arrays ("C-Strings") miteinander zu verbinden, muss eine Funktion aufgerufen werden: strcat