char aus Funktion zurück geben
-
Hallo Leute,
wie bekomme ich aus einer Funktion einen bzw. mehrere char-Werte unbekannter/variabler Größe in die main() zurück?
Klappt irgendwie alles nicht.Nochmal am Beispiel (vari soll in fkt() erstellt werden und in main() ausgegeben werden):
[code]int fkt() { char vari[MAX_PATH]; //code return 0; } int main(void) { //code cout<<vari; return 0; }[/code]
Danke schonmal!
-
std::string fkt()
{
return "irgendwas";
}
-
T@ schrieb:
Hallo Leute,
wie bekomme ich aus einer Funktion einen bzw. mehrere char-Werte unbekannter/variabler Größe in die main() zurück?
Klappt irgendwie alles nicht.Nochmal am Beispiel (vari soll in fkt() erstellt werden und in main() ausgegeben werden):
Du erstellst vari aber in main. Du definierst nämlich das Array da.
char vari[MAX_PATH];
Wenn Du nur einen Zeiger auf einen (oder mehrere Chars) haben möchtest, so musst Du
char * vari;
schreiben.
Wenn fkt Dir ein (char zurückgeben soll, dann muss der Rückgabetyp stimmen.
char * fkt( void )
int const MAX_PATH=255; char * fkt( void ) { char * result; /* erstelle String */ result = new char[ MAX_PATH ]; strcpy( result, "Hallo Welt" ); return result; } int main( void ) { char * vari; vari = fkt(); /* mach was damit */ printf( "vari ist: %s\n", vari ); delete vari; return 0; }
Alternativ läßt Du vari auf dem Stack von main() und übergibst fkt den Hinweis, wo die Daten geschrieben
werden sollen:int const MAX_PATH=255; void fkt( char * data ) { strcpy( data, "Hallo Welt" ); } int main( void ) { char vari[ MAX_PATH ]; fkt( vari ); /* mach was damit */ printf( "vari ist: %s\n", vari ); return 0; }
-
Danke Leute, es funzt!
Xin, das zweite war genau das, was ich gesucht hatte!Über den Weg
vari=fkt()
, kann immer nur der eine Wert von return() zurück gegeben werden, oder?
-
T@ schrieb:
Danke Leute, es funzt!
Xin, das zweite war genau das, was ich gesucht hatte!Über den Weg
vari=fkt()
, kann immer nur der eine Wert von return() zurück gegeben werden, oder?
Richtig. Aber der Wert könnte auch zum Beispiel ein
struct FktResult { char * Zeiger1; int Wert1; int Wert2; };
sein.
Alternativ kannst Du auch Rückgabeparameter mittels Referenzen machen:
int const MAX_PATH=255; void fkt( char * var, int & length ) { strcmp( var, "Hallo Welt" ); length = strlen( "Hallo Welt" ); } int main( void ) { char vari[ MAX_PATH ]; int varl; fkt( vari, varl ); printf( "Vari: %s, Länge: %d\n", vari, varl ); return 0; }