Stringübergabe in c

Servus,
bräuchte dringend eure Hilfe.
Es geht um die Programmiersprache C.nicht c++!
Ich muss ein Programm programmieren welches in einer externen Funktion zwei Strings aus der Main bekommt, die Buchstaben elementeweise in ein dritten String kopiert und diesen wieder an die Main zurück gibt.
ich weiß aufjedenfall,dass man ein zeiger auf das erste stringelement angeben muss: so zb
char* function() {}
aber was gebe ich als parameter an?

char* function(char* string1, char* string2)
{}

string1 ist ein Zeiger auf den ersten Quellstring
string2 ist ein Zeiger auf den zweiten Quellstring

In der Funktion must Du den Speicher für den zu erzeugenden Ergebnis-String allocieren und den Zeider darauf am Ende zurückgeben.

inzwischen hab ich mich an die sache rangewagt.könntest du dir den code bitte mal anschauen:
#include
#define STR1 „wort1“
#define STR2 „wort2“

char* mix(char *s1,char *s2)
{int i,j;
char * Neu;
for(i=0;s1[i]!=0;i++)
{ Neu[i]=s1[i];
}
for(j=0;s2[j]!=0;j++)
{Neu[j]=s2[j];
}
return Neu;
}

int main(void) {
char* s1 = STR1;
char* s2 = STR2;
char * ptr;
char STR3[10];
ptr = &STR3[0];
ptr = mix(char *s1,char *s2)

ist das so erlaubt mit den zeigern,dass ptr erstmal auf das erste element von str3 zeigt?.ändert sich dann überhaupt str3 wenn der pointer den wert vom ergebnisstring der funktion bekommt?
vielen dank erstmal für die schnelle antwort grade :smile:
gruß jorgos

zwei Strings aus der Main bekommt

So so, wie wärs damit?

Das char* aus deiner Signatur ist übrigens ein Rückgabewert. Vielleicht solltest du dich etwas mehr mit den Grundlagen vertraut machen…

tut mir leid, dass ich nicht helfen kann,
bin auch für C kein Experte mehr,
muss wahrscheinlich mal mein Profil überarbeiten.

mfg
N.H.

Hallo,
leider kann ich Dir nicht helfen, da ich die Programmiersprache C nicht beherrsche.
Viel Glück,
Bernd

Es geht um die Programmiersprache C.nicht c++!
Ich muss ein Programm programmieren welches in einer externen
Funktion zwei Strings aus der Main bekommt, die Buchstaben
elementeweise in ein dritten String kopiert und diesen wieder
an die Main zurück gibt.

Wenn du die zwei Zeigeradressen der Stringsk, die du verändern willst, an die Funktion übergibst und dann mit diesen weiterarbeitest, sollte es dementsprechend so gehen, denke ich:

char* function() {char * string1, char * string2}

Hallo Jorgos,

wahrscheinlich bin ich viel zu spät mit meiner Antwort, sorry, war eine Weile offline.

Du brauchst (mindestens) zwei Parameter, nämlich die beiden Strings, die Du vom main an die Funktion übergibst. Also etwa

char* MergeStrings(char* str1, char* str2)

Du musst nur extrem aufpassen, wo und wie Du den Speicher bereitstellst, in dem die Strings gespeichert werden und in dem Du Dein Ergebnis zusammenbaust. Wenn der Rückgabewert ein Pointer auf den Ergebnisstring sein soll, dann muss Deine Funktion den Speicher statisch reservieren. Etwa so:

char* MergeStrings(char* str1, char* str2)
{
static char string3[256];

return(string3);
}

Dafür würde ich aber im Code-Review dem Autor auf die Finger hauen, weil er damit eine lokale Variable von aussen zugreifbar macht. Schlauer ist es, wenn main den Speicher reserviert und als dritten Parameter reingibt. Dann kannst Du Dir eigentlich den Rückgabewert sparen, geht aber auch.

main()
{
char text1[] = „hello“;
char text2[] = „world“;
char mergedstring[256];

MergeStrings(text1, text2, mergedstring);
}

char* MergeStrings(char* str1in, char* str2in, char* str3out)
{

return(str3out);
}

So, hoffe, das hat ein bisschen Klarheit gebracht.

viele Grüsse,
Martin