char Funktion - keine Ausgabe
-
Hallo Leute,
also ich habe eine Funktion geschrieben mit der man ein Char-array umgekehrt wiedergeben sollte.
Kompilieren klappt, aber es kommt keine Ausgabe.
Ich nehme an, dass es etwas mit return zu tuhen hat, bin mir nicht sicher.Funktion:
char reverse (char eingabe[],int links,int rechts){ char tmp[10]; if (links>=rechts){ printf("%s\n",eingabe); } else{ tmp[0] = eingabe[links]; eingabe[links] = eingabe[rechts]; eingabe[rechts] = tmp[0]; return(reverse(eingabe,links+1,rechts-1)); } }
Bin für jede Hilfe dankbar.
Gruß bill
-
Wie rufst du die Funktion denn auf?
Wahrscheinlich ist der Stringterminator der Grund.Noch ein paar Fragen:
Warum ist tmp ein Array? Du nutzt doch nur tmp[0].Welchen Wert gibst du zurück (mit return), wenn links >= rechts ist?
Besser wäre die Rückgabe von eingabe. Also vom Typ char*
-
Die Funktion rufe is so auf:
reverse(eingabe,links,rechts); printf("%s\n",eingabe);
Wobei links, rechts und eingabe in der main definiert sind
Bei der Funktion würde ich gerne "eingabe" returnen, aber das geht anscheinend nicht, denn ich bekomme die Fehlermeldung:return makes integer from pointer without a cast
tmp muss natürlich kein Array sein sondern nur ein char. Hast du natürlich Recht. :p
-
Dann mach aus der Funktion
char reverse(...)
doch eine
char *reverse (...)
.
Jetzt weiß Dein Compiler auch, dass Du nicht einen einzelnen char, sondern einen char Pointer zurückgeben willst und meckert nicht mehr darüber.
-
billbill schrieb:
Die Funktion rufe is so auf:
reverse(eingabe,links,rechts); printf("%s\n",eingabe);
Aber welche Werte haben links und rechts zu diesem Zeitpunkt?
Wie berechnest du links und rechts?
-
@dirkb: links=0 und rechts=strlen(eingabe) am Anfang,
@würmchen: ich habs mit dem Stern gemacht und "return eingabe;" wird jetzt angenommen, aber ich bekomme immernoch keine Ausgabe wenn ich das Programm öffne.
-
Mach mal
rechts=strlen(eingabe)-1;
Wenn du den String "AB" hast, ist das ein Array mit den Elementen { 'A', 'B', '\0'}
strlen ist da 2. Das Element 2 ist aber die '\0'. D.h du schreibst den Stringterminator an den Anfang.
-
Ach ja stimmt, danke.
Aber nach wie vor wird nichts geprintet.:(
-
Geht doch: http://codepad.org/6Kj6O1ix
-
Jo, Klasse
Hmm, vieleicht klappt es bei mir nicht weil ich die Eingabe mit scanf einlesen möchte!?!?
-
meine schöne Antwort
Einfach wech!
Wenn Du keinen Debugger zur Hand hast oder kennst, benutze doch mal printf in der Folgezeile Deines scanf-Aufrufes und schau Dir an, was überhaupt wirklich reingespeichert wird.
-
billbill schrieb:
Hmm, vieleicht klappt es bei mir nicht weil ich die Eingabe mit scanf einlesen möchte!?!?
Wenn du mal deinen ganzen Code (so lang wie nötig, so kurz wie möglich und compilierbar) zeigst, können wir dazu auch etwas sagen.
-
Es hat sich erledigt.
Das Problem war, dass ich im scanf einen Zeilenumbruch geschrieben hatte, ich hab den entfernt und jetzt klappt alles.Vielen, vielen Dank für eure Hilfe.