C Eine Funktion schreiben, die ein char-Array entgegennimmt und ein char-Array returnt

Sculletto schrieb:
@asdfman: so kann man das zwar machen, handelt sich damit aber das Problem ein, dass der Aufrufer der Funktion test() sich darum kömmern muss, den mit malloc() allokierten Speicher irgendwann wieder mit free() freizugeben. Die Lösung mittels Rückgabeparameter ist in der Hinsicht eleganter.

Oder du packst dein Array in ein struct und gibst eine Instanz davon zurück.

Code:
typedef struct
{
    char array[ 200 ];
} ArrayStruct;

ArrayStruct giveMeAnArray( char inputArray[] )
{
    ArrayStruct ret;

    strcpy( ret.array, "Test" );

    return ret;
}

Sorry für eventuelle Syntax-Fehler ... mein C ist ein bißchen rostig.
Ergänzung ()

Kelshan schrieb:
Reines C brauchte ich noch nie und verwende den Begriff aus Gewohnheit daher äquivalent.

Solltest du dir schnellstmöglich wieder abgewöhnen.
Ergänzung ()

Jack159 schrieb:
Code:
#include<stdio.h>
#include <string.h>

char *test(char bla[]) {
	return "test";
}

int main() {
	 char *a = test("bla"); 
	 printf("%s", a);	
	return 0;
}

Meiner Meinung nach inkorrekt, da deine test()-Funktion ein String-Literal zurückgibt, welches vom Typ eigentlich const char* ist, und dann die constness einfach wegschmeißt.

EDIT: Sorry, DaZpoon hatte Letzteres ja bereits in seinem letzten Beitrag bemängelt.
 
Zuletzt bearbeitet:
Muss hier zustimmen, dass die genannte Variante mit der Rückgabe im Parameter die schönste ist. Aber sie hilft OP halt nicht. Deshalb habe ich ihm ein Gerüst gegeben, mit dem er sein Problem auch in verallgemeinerten Fällen lösen kann und ihn an ein Lehrbuch verwiesen, um nachzulesen, was das macht. Finde, das nützt ihm am meisten und leuchtet bei Anfängerwissen auch ein.

Aber ich habe auch keine didaktische Ausbildung genossen und mag mit meinem Ansatz ihm auf die Sprünge zu helfen massiv ins Klo gegriffen haben.
 
asdfman schrieb:
Muss hier zustimmen, dass die genannte Variante mit der Rückgabe im Parameter die schönste ist. Aber sie hilft OP halt nicht.
wieso hilft sie ihm nicht? Weil er sich mit Rückgabeparametern nicht auskennt? Das kann er sich ja aneignen, und wird dies früher oder später auch müssen, wenn er sich näher mit C beschäftigen will. Ihm wurde hier natürlich keine lehrbuchreife Einführung in Rückgabeparameter gegeben, das ist klar, aber zumindest eine grobe Skizzierung, die ihm eine brauchbare Grundlage bietet, sich alles weitere anzulesen.
 
Weil das ändern von Parametern, wenn man nur Rückgabewerte kennt unintuitiv ist und ohne weitere Erläuterung, die für ein ansatzweises Verständnis schon recht tief gehen müsste, nur wie reiner Voodoo erscheint.

Ohne Verständnis gibt es meiner Erfahrung nach auch keinen Erkenntnisgewinn.
 
asdfman schrieb:
Weil das ändern von Parametern, wenn man nur Rückgabewerte kennt unintuitiv ist und ohne weitere Erläuterung, die für ein ansatzweises Verständnis schon recht tief gehen müsste, nur wie reiner Voodoo erscheint.
Wie ich schon sagte: Ihm wurde hier natürlich keine lehrbuchreife Einführung in Rückgabeparameter gegeben, das ist klar, aber zumindest eine grobe Skizzierung, die ihm eine brauchbare Grundlage bietet, sich alles weitere anzulesen.

Zumal er als aus der Java-Ecke Kommender durchaus call-by-reference kennen sollte.
 
Zurück
Oben