Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

String als Rückgabewert einer Funktion (C)

vesala / 6 Antworten / Flachansicht Nickles

nabend,


ist es möglich einen string(z.B: char feld[20];) als rückgabewert zurückzugeben?
also return feld;


wenn ja wie definiere ich dann die Funktion, habe bis jetzt nur Zeiger auf globalen String oder einen einzelnen char hinbekommen->welches mir beides nix nützt


THX Vesala

bei Antwort benachrichtigen
mr.escape vesala „die funktion macht folgendes: sie holt aus einer Textdatei eine bestimmt Zeile...“
Optionen

Man könnte z.b. CString (mfc) benutzen, oder aber "zirkulierende" statische puffer. Nicht gerade elegant, aber wirkungsvoll. Die rückgabe von neu allokierten speicherbereichen bringt hingegen nur stress mit memory leaks, solange nicht eine klasse, wie bei CString darüber wacht. Sich mit der mfc ins bett zu legen, wenn man noch ohne sie auskommt, sollte man sich auch mehrfach überlegen.

#define MAX_CALLS 5  //anzahl maximaler "gleichzeitiger" aufrufe

char buff[MAX_CALLS][1024];
char* holeZeile(int ZeilenNr){
static n=0;
n=(n+1)%MAX_CALLS;
//fülle buff[n] z.b.:
sprintf(buff[n], "[%d]", ZeilenNr);
return buff[n];
}


ruft man dann z.b. in der konsole:
printf(":%s:%s:%s:%s:%s:\n", holeZeile(1), holeZeile(3), holeZeile(5), holeZeile(7), holeZeile(9));

auf, gibt es
:[1]:[3]:[5]:[7]:[9]:

zu sehen.

mr.escape
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen