const int STRING_BUFFER_SIZE = 50;
char stringBuffer[STRING_BUFFER_SIZE];
bool readLine(Stream& stream)
{
static int index; //Index im Ziel-Array
while(stream.available()) //sind Daten da?
{
char c = stream.read(); //Zeichen einlesen
if(c >= 32 && index < STRING_BUFFER_SIZE - 1) //kein Steuerzeichen? Noch Platz im Puffer?
{
stringBuffer[index++] = c; //Zeichen abspeichern und Index inkrementieren
}
else if(c == '\n' && index > 0) //Endzeichen da? Überhaupt irgendwas vorher eingelesen?
{
stringBuffer[index] = '\0'; //String terminieren
index = 0; //Index zurücksetzen
return true; //melden dass fertig
}
}
return false; //noch noch nicht fertig
}
-1 damit noch Platz für den Terminator ist. Und das index > 0 ist praktisch, damit keine leere Zeilen als Erfolg gemeldet werden. Also es muss mindestens ein Nicht-Steuerzeichen eingelesen worden sein damit eine Zeile als eingelesen gemeldet wird.