malloc()- char array, mit %s ausgeben
-
Hallo, hab eigentlich eine ganz simple Frage, ich reserviere mit malloc() ein speicherpaltz für 4 char zeichen, belege diesen speicherplatz dann mit "text", und möchte diesen Wert "text" direkt ueber die Funktion prinf() als String "%s" aufrufen, das klappt auch, aber zusätzlich zu diesem Wert "text" kommen bei der ausgabe noch irgendwelche undifinierte Werte, sodass es bei der Ausgabe wie folgt aussieht "text²²²²"
Warum ist das so???
Program:
#include <stdio.h> #include <stdlib.h> void main(void) { char *ptr; ptr=((char *)malloc(4*sizeof(*ptr))); ptr[0]='t'; ptr[1]='e'; ptr[2]='x'; ptr[3]='t'; printf("%s \n", ptr); free(ptr); }
-
Du hast die terminierende \0 vergessen. Also gleich zweimal
-
Hi,
da musst immer Textlänge + 1 reservieren, da sprintf so lange Zeichen ausgibt bis es auf \0 trifft.
Folgendes sollte korrekt funktionieren:#include <stdio.h> #include <stdlib.h> void main(void) { char *ptr; ptr=((char *)malloc(5 * sizeof(char))); ptr[0]='t'; ptr[1]='e'; ptr[2]='x'; ptr[3]='t'; ptr[4]='\0' printf("%s \n", ptr); free(ptr); }
-
Tim schrieb:
Du hast die terminierende \0 vergessen. Also gleich zweimal
achso....!, du meinst ich muss zusäzlich ein Byt Speicher für \0 reservieren und dann noch bei der eingabe \0 manuel dranhängen??
-
Danke Leute, ich probiere es!