Hallo,
ich bin am basteln mit der Stringlänge. Die max. Größe eines String Arrays muß man ja definieren. Soweit klar.
Gedanklich stolper ich jedoch immer an der definierten Größe und Indexnummer.
solche Angaben
char Stringvar[15];
gehen doch immer bei 0 los. Also hätte ich einen Indexbereich von 0 bis 15? Oder sind 0 bis 14 gemeint, die dann in Summe die 15 ergeben.
Anders gefragt. Definiere ich die höchste Indexnummer oder max. Anzahl der Zeichen?
Testsketch:
const int buffersize = 15;
char Stringvar[buffersize];
void setup() {
Serial.begin(38400);
Serial.print("String Size: "); Serial.println(sizeof(Stringvar));
Serial.print("Laenge,Zeichenanzahl "); Serial.println(strlen(Stringvar));
Serial.println();
string_fuellen();
}
void loop() {
// empty
}
void string_fuellen()
{
for (int i=0; i<buffersize-1; i++) { // 14x, Index 0 bis 13
Stringvar[i] = 'I';
Stringvar[i+1] = '\0'; // Null Terminierung
Serial.print("IndexNr "); Serial.print(i);
Serial.print("\t String Size: "); Serial.print(sizeof(Stringvar));
Serial.print("\t Laenge,Zeichenanzahl: "); Serial.print(strlen(Stringvar));
Serial.print("\t Inhalt: "); Serial.println(Stringvar);
}
Serial.println();
// an Indexnr. 6 Null Terminierung
Stringvar[6] = '\0';
Serial.print("Stringvar: "); Serial.print(Stringvar); Serial.print(" "); Serial.print(sizeof(Stringvar));
Serial.print(" Laenge,Zeichenanzahl: "); Serial.println(strlen(Stringvar));
// an Indexnr. 0 Null Terminierung
Stringvar[0] = '\0';
Serial.print("Stringvar: "); Serial.print(Stringvar); Serial.print("\t "); Serial.print(sizeof(Stringvar));
Serial.print(" Laenge,Zeichenanzahl: "); Serial.println(strlen(Stringvar));
}