Länge eines Char arrays bestimmen



  • Guten Abend erstmal,

    folgendes kleines Programm:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	char *C = new char[5];
    
    	for(int i =0; i < 5; i++)
    	{   C[i] = 'H';}
    
       cout << strlen(C);
    
    	return 0;
    }
    

    Es soll eigentlich die Länge des char-arrays ausgeben. Dabei läuft jedoch irgend etwas falsch. Eigentlich sollte die Länge 5 sein, doch wird 11 ausgegeben. Im debug-Modus enthält das array nach der Speicheranforderung(new) bereits 11 beliebige zeichen (etwa: "jjjjjýýýýý@"). Meine frage ist nun, warum überhaupt platz für 11 chars belegt wird, wenn ich doch nur 5 Plätze anfordere?

    Wie kann ich das beheben?

    Um es gleich vorweg zu sagen: Ich weis, dass ich auch einen String benutzen könnte, aber es geht hier nur um die Übung.

    Danke schonmal

    Don Quijote



  • Don Quijote schrieb:

    Es soll eigentlich die Länge des char-arrays ausgeben. Dabei läuft jedoch irgend etwas falsch. Eigentlich sollte die Länge 5 sein, doch wird 11 augegeben.

    strlen bestimmt die Länge eines Strings, indem es ihn zeichenweise durchläuft und nach dem Zeichen '\0', welches das Ende markiert, sucht. Zum Bestimmen sonstiger Arraylängen ist die Funktion nicht geeignet. Bei dir kommt halt an Stelle 11 zufällig ein Nullzeichen.

    Es gibt keine (portable) Möglichkeit, die Größe eines per new allozierten Arrays nachträglich festzustellen.



  • ok danke....


Anmelden zum Antworten