Zum Inhalt springen

Wie String bzw. Char Array in Funktion übergeben ?


Empfohlene Beiträge

Geschrieben (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 von durst99
Geschrieben
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.

Geschrieben

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);

}

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...