Komische Ausgabe im Programm

R

Roman91

Hallo ihr Computer-Programmierer!
Ich habe folgendes Problem in meinem Programm: Ich schreibe:
printf("%li\n",sizeof(argv[1]));

und er gibt mir immer 8 aus, egal wie lange der Parameter ist den ich eingebe.
Ich will dass wenn ich zb eingebe: ./programmname asdf dass er mir dann 4 (oder 5 zwecks den \0) ausgibt.
Wass is da Kaputt oder falsch?
Kann das irg was mit der Adresse zu tun haben? Pointer? den der ist ja 8 bit lang, oder?
 
Hi,

sizeof() gibt dir die Größe (des benötigten Speichers) der Variable oder des übergebenen Typs.
Da argv vom Typ char ** ist, ist argv[1] bzw. argv[x] immer vom Typ char*.

Und die Größe eines Zeigers auf einen char* ist auf 64-Bit-Systemen 8 Byte groß.
(Auf 32-Bit-System wären es z.B. nur 4 Bytes.)

Probier es mal mit strlen():
C++:
size_t string_length = strlen(argv[1]);
// Do something with string_length!
 

Neue Beiträge

Zurück