Veröffentlicht 16. April 201114 j 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 201114 j von durst99
16. April 201114 j Eine Möglichkeit wäre das ganze via Zeiger und Platzierung auf dem Heap durchzuführen, als andere übergebe das ganze als Zeigerreferenz.
16. April 201114 j Hm Also mit Zeigern kenn ich mich noch nicht wirklich aus. Kann mir jemand einen kleinen Ansatz geben ?
16. April 201114 j Soll es denn jetzt ein Array von chars sein, oder darf es auch "String" sein - also: rein C oder gern auch C++?
18. April 201114 j 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.
18. April 201114 j 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); }
18. April 201114 j 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]
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.