Dann will ich auch mal Anfänger sein
Wie muss ich denn eine Funktion definieren und aufrufen, wenn ich nicht den Zeiger auf einen String sondern den String selbst übergeben will?
Derzeit siehts z.B. so aus:
void Test(char *str)
{
//packt den String in ein globales Zeichenarray und eine andere Funktion zeigt diesen dann an
}
void Sub(void)
{
char str1[64];
TAP_SPrint(str1, "mein Test");
Test(str1);
}
Da str1 nur ne lokale Variable ist, übergibt er zwar den Zeiger auf "mein Test", aber wenn Test oder die andere Funktion die Anzeige macht, dann ist der Zeiger schon wieder unbekannt bzw. hat einen undefinierten Zeicheninhalt.
Auch wenn ich die Funktion auf
"void Test(char str[])"
ändere, wird scheinbar der Zeiger und nicht der Inhalt übergeben.
Momentan kann ich es nur umgehen, indem ich str1 zu einer globalen Variable mache, da diese dann dauerhaft existiert. So will ich es aber eigentlich nicht haben. Ich bräuchte ja sonst jeweils eine globale Variable für jede Zeile die ich ausgeben will.
Wie soll ich die Funktion Test definieren bzw. was muss ich beim Aufruf beachten, damit der Wert und nicht der Zeiger übergeben wird (oder damit er in Test einen neuen globalen Speicher für den Zeiger benutzt)?