Wie Char Array an Funktion übergeben ?
-
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.
-
hallo,
diese problem habe ich auch im thema "hilfe bei funktion" erklärt, hier nochmal das Beispiel:
#include <stdio.h> #include <stdlib.h> char *name(void)//Funktion hat den Typ * damit kann man Pointer zurückgeben { static char nam[256]; printf("Willkommen bei *** bitte gib deinen Namen ein: "); scanf("%s",nam); return nam;//Da du einen String brauchst, übergibt du eine Adresse zurück } int main(void) { char *pPointer=NULL; pPointer=name();//Die Adresse von pPointer zeigt jetzt auf die variable nam printf("%s\n",pPointer);//Achtung!: Die adresse muss geprinted werden. return 0; }
um einen string zu übergeben muss die funktion den typ * haben.
hoffe das hat geholfenlg
-
Schlechtes Beispiel.
static ist im Hinblick auf Multithreadfähigkeit und Debugging/Wartbarkeit möglichst zu vermeiden. Für solche Trivialfälle sollte der aufrufende Kontext den Speicher bereitstellen:char *name(char *s,size_t w) { return fgets( s,w,stdin ); } int main() { char eingabe[50]; puts( name(eingabe,sizeof eingabe) ); return 0; }
Hier fehlt natürlich noch die Fehlerbehandlung.
-
Klasse, mit der zweiten Methode hats jetzt funktioniert
Danke