durst99 Geschrieben 16. April 2011 Geschrieben 16. April 2011 (bearbeitet) Hallo Angenommen ich habe eine Eingeabefunktion : char eingabe() Das Char Array ist wie folgt deklariert : char input [50] Dort lese ich eine Zeichenkette ein : scanf("%s",input); Z.b : 2,3,4,+,+ ( Soll eine Postfix Auswertung machen ). Und dann returne ich es : return input; Jetzt möchte ich das eingelesene Char Array in der int main () wieder aufrufen. Dazu habe ich : input = eingabe() verwendet. Leider funktioniert die Sache so nicht. Bekomme dann vom Compiler die Fehlermeldung : error: incompatible types when assigning to type ‘char[50]’ from type ‘char’ Wie funktioniert die Sache ? Wenn ich alles in der main Funktion einlese funktioniert das Programm wunderbar, leider funktioniert das übergeben vom Char Array nicht. Bearbeitet 16. April 2011 von durst99 Zitieren
flashpixx Geschrieben 16. April 2011 Geschrieben 16. April 2011 Eine Möglichkeit wäre das ganze via Zeiger und Platzierung auf dem Heap durchzuführen, als andere übergebe das ganze als Zeigerreferenz. Zitieren
durst99 Geschrieben 16. April 2011 Autor Geschrieben 16. April 2011 Hm Also mit Zeigern kenn ich mich noch nicht wirklich aus. Kann mir jemand einen kleinen Ansatz geben ? Zitieren
lilith2k3 Geschrieben 16. April 2011 Geschrieben 16. April 2011 Soll es denn jetzt ein Array von chars sein, oder darf es auch "String" sein - also: rein C oder gern auch C++? Zitieren
durst99 Geschrieben 16. April 2011 Autor Geschrieben 16. April 2011 Nein schon rein C , ohne den string.h header. Zitieren
Klotzkopp Geschrieben 18. April 2011 Geschrieben 18. April 2011 Angenommen ich habe eine Eingeabefunktion : char eingabe() Hier passt's schon nicht. Du möchtest, dass die Funktion ein char-Array zurückgibt, deklarierst den Rückgabetype aber als einzelnes char. Arrays sind in C nicht kopierbar. Du kannst einem Array nichts zuweisen, und du kannst es daher auch nicht als Rückgabetype benutzen. Die übliche Lösung ist, das Array als der Funktion als Parameter mitzugeben: Allerdings können Arrays auch keine Funktionsparameter sein. Sie degenerieren dann zu Zeigern auf das erste Element. Das hat zur Folge, dass die Information, wie groß das Array ist, verloren geht. Wenn du diese Information brauchst, solltest du sie in einem zusätzlichen Parameter mitgeben. Zitieren
durst99 Geschrieben 18. April 2011 Autor Geschrieben 18. April 2011 Hab mir jetzt mal die Möglichkeiten durchgelesen wie man das umsetzen kann und hab dann folgendes gemacht : char *eingabe(char *s,size_t w) { return fgets( s,w,stdin ); } void main() { char input[50]; eingabe(input,sizeof input); } Zitieren
Klotzkopp Geschrieben 18. April 2011 Geschrieben 18. April 2011 Lass den Rückgabewert weg, du brauchst ihn nicht und benutzt ihn auch nicht: void eingabe(char *s,size_t w) { fgets( s,w,stdin ); }[/code] Zitieren
durst99 Geschrieben 18. April 2011 Autor Geschrieben 18. April 2011 Alles klar, funktioniert wunderbar so. Danke. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.