Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Hm

Also mit Zeigern kenn ich mich noch nicht wirklich aus.

Kann mir jemand einen kleinen Ansatz geben ?

Nein schon rein C , ohne den string.h header.

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.

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

}

Alles klar, funktioniert wunderbar so.

Danke.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.