Hallo Auchfalls,
Also return „hallo“ funktioniert ja auch.
Ja, aber nur weil „hallo“ eine konstaten ist und in einem anderen Bereich abgelegt wird.
Meine bisherigen
Versuche, den Inhalt (also: return *string:wink: des Strings
zurückzugeben, haben auch nicht geklappt.
Der Zeiger zeicht ja auch auf den Bereich, welcher nacht funktions-ende gelöscht wird.
Eine Lösung wäre folgende, die aber auch ein Problem hat.
Sauber geht es nur mit malloc()
char \*get\_string(void)
{
static char text[100];
strncpy(text, "Da bin ich jetzt drin.", sizeof(text));
return text;
}
Um das Problem zu zeigen: Diese Variante funktioniert identisch und hat das selbe Problem:
char text[100];
char \*get\_string(void)
{
strncpy(text, "Da bin ich jetzt drin.", sizeof(text));
return text;
}
bei jedem Aufruf von get:string() wird text[] verändert, was zu ungewollten Seiteneffekten führen kann.
void test(void)
{
char \*s;
char \*s1;
s = get\_string();
puts(s);
strcpy(s, "Hallo!");
puts(s);
s1 = get\_string();
puts(s);
puts(s1);
}
Die Ausgabe müsste folgende sein:
Da bin ich jetzt drin.
Hallo!
Da bin ich jetzt drin.
Da bin ich jetzt drin.
MfG Peter(TOO)
P.S: ich hoffe es hat keien Tippfehler, hab den code nicht durch den Compiler gejagt.