length() für char array
-
#include <iostream> using namespace std; int length(char *pchar){ int i; while(pchar[i-1]) i++; return i; } int main(){ char bla[]="der peter"; cout<<length(bla); }dieses programm erzeugt ein undefiniertes verhalten... warum?
-
Weil i nicht initialisiert wird.
-
ach so ein mist^^ klappt danke
-
length() für char array nennt sich strlen, zumindest wenn man bei char Array von einem C-String spricht.
-
neomic schrieb:
#include <iostream> using namespace std; int length(char *pchar){ int i; while(pchar[i-1]) i++; return i; } int main(){ char bla[]="der peter"; cout<<length(bla); }dieses programm erzeugt ein undefiniertes verhalten... warum?
da ist aber noch ein Wurm drin. da Du mit [i-1] auf den buffer zugreifst musst Du i auf 1 initialisieren, andernfalls greifts Du ja auf undefinieten Speicher zu (0-1 halt).
Das aber bedeutet, das Du für einen leeren String wie "" eine Länge von 1 rausbekommst. Die Länge eines Strings ist aber "normalerweise" als die Anzahl der Zeichen ohne das folgende 0-Zeichen definiert.
-
jojo das geschah dann in der feinabstimmung nach dem ersten test
