Buffergröße beim Einlesen eines Files

Hallo,

das ist eigentlich weniger ein Arduino-Problem:

Ich lese eine Text-Datei von einer SD unbekannter Größe ein, und diese muß in einen char-Buffer.
Aber wie groß dimensioniere ich diesen, wenn ich nicht weiß, wieviele Zeichen kommen?
Auf dem PC ist Speicher kein Problem, aber beim Arduino schon.
Meine Ansätze:

  1. Man könnte zwei Durchläufe machen. Im ersten werden die Zeichen gezählt und und mit Anzahl dieser Zeichen dann für einen zweiten Durchlauf ein Buffer geeigneter Größe reserviert.
  2. Man verwendet ein String-Objekt in der Art: String s; s = s + “neues eingelesenes Zeichen”;

Gibt es noch etwas eleganteres?

Gruß
Andreas

phthalo:
Gibt es noch etwas eleganteres?

Jede Datei hat eine Dateigröße.

Guckst Du Dateigröße, weißt Du wieviel Zeichen in Datei.

Im übrigen können Textdateien sehr viel größer werden als die RAM-Speichergröße eines Arduino. Dann mußt Du die Datei sowieso in Häppchen bearbeiten. Z.B. bei einer Webserver-Anwendung: Du liest einen Puffer bestimmter Puffergröße ein, verarbeitest die Daten in dem Puffer, und liest dann das nächste Stückchen Datei ein, bis das Dateiende erreicht ist.

  1. Man verwendet ein String-Objekt in der Art: String s; s = s + "neues eingelesenes Zeichen";

Das ist eventuell elegant, aber eigentlich die schlechtest-mögliche Art:
Erstens sind es 3 String-Objekte. ( s, "neu eingelesenes Zeichen wird erstmal in einen String gewandelt", das neue s ist ein anderes Objekt )
Zweitens ist ein String unnötigerweise größer als der enthaltene Text.
Drittens kriegst du nicht mit, wenn der RAM voll ist.