Tobias K.
Erfahrenes Mitglied
moin
Das Problem ist das du nur einen String kopieren kannst/solltest du durch ein '\0' abgeschlossen ist. Sonst kopiert er dir solange Zeichgen in str bis mal zufällig ein '\0' im Arbeitsspeicher liegt.
So sollte es gehen.
In deinem Code erzeugst du schon du einen Pufferüberlauf in folgenden zwei Zeilen:
Die erste Zeile geht noch, die zweite Zeile kopiert nicht nur ein b rein sonder auch ein '\0' und damit sind es wieder mehr Zeichen als Speicher reserviert ist.
Also eizelne Zeichen immer in Hochkommas.
Für dein Problem hab ich aber auch schon auf die Funktion strncat hingewiesen, dir nur soviele Zeichen anhängt wie du vorgibst.
mfg
umbrasaxum
Das Problem ist das du nur einen String kopieren kannst/solltest du durch ein '\0' abgeschlossen ist. Sonst kopiert er dir solange Zeichgen in str bis mal zufällig ein '\0' im Arbeitsspeicher liegt.
Code:
char *str, *str_arr[35];
str_arr[0] = 'a';
str_arr[1] = 'b';
str_arr[2]= '\0';
str = malloc(3);
str = "";
strcat(str,str_arr);
In deinem Code erzeugst du schon du einen Pufferüberlauf in folgenden zwei Zeilen:
Code:
str_arr[0] = "a"';
str_arr[1] = "b";
Also eizelne Zeichen immer in Hochkommas.
Für dein Problem hab ich aber auch schon auf die Funktion strncat hingewiesen, dir nur soviele Zeichen anhängt wie du vorgibst.
mfg
umbrasaxum