.
"Ich erkläre das mal richtig."
gefolgt von
Im Hauptprogramm habe ich eine Zeichenkette "temp".
Die soll in eine "include <temperatur.h> übergeben
werden.
ist ein schöner Wochenanfang. Ja, Lachen ist gesund.
Mal ernsthaft:
#define TEXTLAENGE 20
void hauptprogramm(void)
{
char temp[TEXTLAENGE];
subProgramm(temp, TEXTLAENGE);
}
...
void subProgramm(char* p, int l)
{
if (!p)
return;
strncpy(p, "temperatur", l);
}
Das entscheidende ist, daß der aufgerufenen Funktion ein Pointer auf
den String übergeben wird (das ist ja bei C-Arrays implizit so), und
sicherheitshalber sollte auch die Länge des Stringpuffers an die
aufgerufene Funktion übergeben werden, damit diese nicht falsche
Annahmen ob dessen Länge trifft und darauffolgende Speicherbereiche
überschreibt (der berühmte "buffer overrun").
Auch ist es sinnvoll, in Funktionen, denen Pointer auf was auch immer
übergeben werden, diese Pointer auf zumindest rudimentäre Gültigkeit zu
überprüfen (sie sollten nicht 0 sein).