...Größe
-
Hi!
Mal eine blöde Frage:
Kann ich die Größe der Variablen "test" auch während des Programmablaufs festlegen, also wenn ich beispielsweise nur ein Zeichen eintippe (=[1]) oder wenn ich 100 Zeichen eintippe (=[100])?Falls ja, wie?
#include <stdio.h> #include <stdlib.h> int main() { char test[10]; scanf("%s", &test); printf("'%s' hat die Groesse: %d\n", test, sizeof(test)); system("PAUSE"); return 0; }
-
Kannst du, wenn du dich mit Zeigern/Pointern auseinandersetzt.
In der FAQ steht alles nötige.
-
Also so wie ich glaube dass du dir das vorstelllst, geht es nicht. Man kann zwar seit C99 (überarbeiteter C-Standard) sog. "Variable Sized Arrays" benutzen, aber für eine Eingabe bringt dir das nicht sehr viel. So ein array würde dann so aussehen:
int i=5; char buffe[i];
In deinem Fall macht man es idR. so, dass man einen ausreichend großen Buffer anlegt, dann den String darin einliesst, die Länge des Strings ermittelt und dann den Speicher für den String reserveiert...
Bsp:#include <stdio.h> #include <stdlib.h> int main(){ char buff[100]; char* speicher; fgets(buff, sizeof(buff), stdin); speicher=malloc(strlen(buff)+1); memset(speicher,0,strlen(buff)+1); memcpy(speicher, buff, strlen(buff)); printf("Eingabe war: %s\n",speicher); return 0; }
-
TactX schrieb:
sog. "Variable Sized Arrays"
Variable Length Arrays oder kurz VLA
-
Stimmt, weiss auch nicht wie ich auf "size" gekommen bin...
-
VLAs sollten aber nicht immer die erste Wahl sein
einfach malloc/realloc verwenden