Länge Ausgabe

Hallo,
ich muss ein Programm schreiben, welches längeres von zwei Strings ermittelt und dessen Länge zurückgibt.
So schaut mein Programm aus:

#include
char *MaxString (int *laeng, char *a, char *b );
int main (void)

{
char a[]=„Tag“, b[]=„Hallo“;
int laeng=0;
printf(„String 1:%s\n“,a);
printf(„String 2:%s\n“,b);
printf("\nLaengerer String ist %s und er hat %d Zeihen.\n", MaxString( &laeng, a, b),laeng);
return 0;

}
char *MaxString (int *laeng, char *a, char *b )
{
char i=0, e=0;

while( a[i] !=’\0’)
++i;
while( b[e] !=’\0’)
++e;

if (i>e)
{ *laeng = i ;
return &a[0];

}

else if (i

Hallo

Parameter werden in C über den Stack an Funktionen ünbergeben.
Die Parameter werden von Rechts her abgearbeitet.

printf("\nLaengerer String ist %s und er hat %d Zeichen.\n",
MaxString( &laeng, a, b),laeng);

Zuerst wird „laenge“ auf den Stack gelegt.
Danach wird „MaxString(…)“ aufgerufen und das Resultat auf dem Stack abgelegt.
Dann kommt „\nL…“ auf den Stack (als Zeiger auf den String).
und jetzt wird „printf()“ aufgerufen.

Siehst du jetzt das Problem ???

MfG Peter(TOO)

ich muss ein Programm schreiben, welches längeres von zwei
Strings ermittelt und dessen Länge zurückgibt.
So schaut mein Programm aus:

#include
char *MaxString (int *laeng, char *a, char *b );
int main (void)

{
char a[]=„Tag“, b[]=„Hallo“;
int laeng=0;
printf(„String 1:%s\n“,a);
printf(„String 2:%s\n“,b);
printf("\nLaengerer String ist %s und er hat %d Zeihen.\n",
MaxString( &laeng, a, b),laeng);
return 0;

}
char *MaxString (int *laeng, char *a, char *b )
{
char i=0, e=0;

while( a[i] !=’\0’)
++i;
while( b[e] !=’\0’)
++e;

if (i>e)
{ *laeng = i ;
return &a[0];

}

else if (i

Hallo,

leider erkenne ich das Problem nicht.
Was ist ein „Stack“ ?

Zuerst wird „laenge“ auf den Stack gelegt.
Danach wird „MaxString(…)“ aufgerufen und das Resultat auf
dem Stack abgelegt.

Und was meinst du mit:

Dann kommt „\nL…“ auf den Stack (als Zeiger auf den String).
und jetzt wird „printf()“ aufgerufen.

MfG,
Alexander

Hallo Alexander,

Du solltest die ein Buch über die Grundlagen von C/C++ zulegen und lesen.
Auf Grund deiner Fragen müsste ich jetzt ein Grundlagen-Seminar zu C/C++ schreiben und dafür bin ich zu faul.

Hier noch ein paar Links zum Theme:
http://www.informatik.uni-halle.de/lehre/c/
http://www.nf.fh-nuernberg.de/~jesorsky/skript-c/

MfG Peter(TOO)
P.S. Ein Stack ist ein fundamentales Element einer CPU und etwas C/C++ spezifisches.

leider erkenne ich das Problem nicht.
Was ist ein „Stack“ ?

Zuerst wird „laenge“ auf den Stack gelegt.
Danach wird „MaxString(…)“ aufgerufen und das Resultat auf
dem Stack abgelegt.

Und was meinst du mit:

Dann kommt „\nL…“ auf den Stack (als Zeiger auf den String).
und jetzt wird „printf()“ aufgerufen.

MfG,

Hallo Peter,

ich hab’s rausgekriegt.
Jetzt weiss ich auch was du gemeint hast.

MaxString( &laeng, a, b);
printf("\nLaengerer String ist %s und er hat %d Zeihen.\n", MaxString( &laeng, a, b),laeng);

Danke
MfG,
Alexander

Hallo Alexander,

ich hab’s rausgekriegt.
Jetzt weiss ich auch was du gemeint hast.

Auf jeden Fall wirst einen solchen Fehler in Zukunft nicht mehr machen :wink:)


MaxString( &laeng, a, b);
printf("\nLaengerer String ist %s und er hat %d Zeihen.\n",
MaxString( &laeng, a, b),laeng);

Den „Zeihen“ solltest du noch ein „c“ soendieren !!

MfG Peter(TOO)