durst99 Geschrieben 16. April 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 16. April 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
durst99 Geschrieben 16. April 2011 Autor Teilen Geschrieben 16. April 2011 Hm Also mit Zeigern kenn ich mich noch nicht wirklich aus. Kann mir jemand einen kleinen Ansatz geben ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lilith2k3 Geschrieben 16. April 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
durst99 Geschrieben 16. April 2011 Autor Teilen Geschrieben 16. April 2011 Nein schon rein C , ohne den string.h header. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
durst99 Geschrieben 18. April 2011 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 18. April 2011 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
durst99 Geschrieben 18. April 2011 Autor Teilen Geschrieben 18. April 2011 Alles klar, funktioniert wunderbar so. Danke. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.