zeiger
-
char puffer[] = "hallo du";
dann ist er aber auch nur so lang wie die Zeichenkette die du übergibst.
-
lippoliv schrieb:
char puffer[] = "hallo du";
dann ist er aber auch nur so lang wie die Zeichenkette die du übergibst.
char puffer[128] = "hallo du";
-
ja so gehts auch...
-
ich wollte ja damit zeiger usw üben, aber wenn ich das so
char puffer[128] = "hallo du";
mache, dann ist das ja einfach nur nen char der den inhalt hat und wie bekommt das dann einen namen? so:???
char hallo puffer[128] = "hallo du";
-
Der Name ist "puffer" du kannst allso
printf( "%c", puffer+i ); //oder printf( "%s", puffer );
schreiben.
Du kannst (um Zeiger zu üben) sowas machen:
char *myBuffer;//pointer auf char-speicherbereich erstellen myBuffer = malloc( sizeof(char)*128 );//speicher reservieren strcpy( myBuff, "hallo" );//in speicher schreiben myBuff[strlen(myBuff)+1] = '\0'; //array beenden printf( "%s", myBuff );//array ausgeben
Das währe dann Pointer
-
lippoliv schrieb:
[cpp]
...
myBuffer = malloc( sizeof(char)*128 );//speicher reservieren
...haste nicht Tims neustes tutorial gesehen?
mach es so: myBuffer = malloc (128*sizeof(*myBuffer));
und wo ist dein 'free' hin, häää?
-
lippoliv schrieb:
char *myBuffer; /* und am besten mit 0 initialisieren */ myBuffer = malloc( sizeof(char)*128 ); /* wobei man sich sizeof( char ) sparen kann ( immer 1 ) */ strcpy( myBuff, "hallo" ); myBuff[strlen(myBuff)+1] = '\0'; /* Wenn strcpy die '\0' nicht schreibt, wie ermittelt dann strlen die länge ;) */ printf( "%s", myBuff );
Gut, dass
strcpy
auch eine abschließende 0 schreibt.greetz, Swordfish
-
@Swordfish: ja ich war mir nicht mehr sicher obes das tut... Habs sicherheitshalber gemacht...
@tutorial-freak: meine Zeile is übersichtlicher mit "sizeof(char)" da sihet man gleich was es ist...
ja ich und free oder fclose... Ich vergess die immer... Wieso kann das Programm da nich einfach abstürzen oder mein Compiler meckern? Dann würd ichs lernen... Natürlich muss da noch ein "free(myBuff);" drunter.
-
Wenn
strcpy( )
die Null nicht setzen würde, dürfte sich dein Code (myBuff[ strlen( myBuff ) + 1 ] = '\0';
) mit Fug und Recht aufhängen. Wie zum Teufel sollstrlen( )
denn die Länge ermitteln!? Raten?greetz, Swordfish
-
danke, auch wenn ich denn rest noch nicht ganz verstehe, aber bald!
-
Stimmt auch wieder