char *zerlegen(char * args)
{
char *param[5] ;
//Das wird jetzt gefüllt
return param[0];
}
Wenn du ein Char-Array lokal in einer Funktion anlegst, kannst du nicht den Zeiger darauf zurückgeben, weil das Array beim Verlassen der Funktion zerstört wird.
Um ein String zurückzugeben, gibs diese Möglichkeiten:
- Stringklassen verwenden:
zum Beispiel in Windows:
CString zerlegen(char * args)
{
CString param;
param=„xyz“;
return param;
}
- Das Chararray extern anlegen und pointer übergeben:
void zerlegen(char * args, char *ret, int retlen)
{
strncpy(ret,„xyz“,retlen);
}
Aufruf mit:
char param[100];
zerlegen(args,param,sizeof(param));
diese Vorgehensweise ist eigentlich in C die üblichste. strcpy funktioniert auch genauso.
- Über static:
char* zerlegen(char * args)
{
static char param[10];
strcpy(param,„xyz“);
return param;
}
ACHTUNG! diese Funktion ist dann nicht Multitaskig-Fähig. Wenn mehrere Threads gleichzeitig diese Funktion aufrufen, kann Müll bei rauskommen, weil nur ein Param global vorhanden ist.
- Nich zu empfehen über malloc:
char* zerlegen(char * args)
{
char *param = (char*) malloc(10);
strcpy(param,„xyz“);
return param;
}
der Aufrufer muss dann den pointer nach gebrauch mit free freigeben. Hohe Gefahr von Speicherlecks! Sollte man IMHO auf jeden Fall die Finger von lassen!
cu
Steffen