Programmieren C Funktionen Strukturen String-Arry

Hi an alle hier!!!

hab ein kleines Problem bei der Programmierung in C!
es geht darum, dass ich eine Struktur innerhalb einer Funktion definiert hab und diese mit einer externen Datei „…“ . dat fülle!

Hab nun eine 2. Funktion geschrieben, in der ich Inhalte dieser strukur mit dem If -Befehl weiter verarbeiten möchte!

Hab aber nun das Problem, dass der Compiler diesen „Variable“ nicht erkennt! (sprich: „…“ nicht deklarierter bezeichner)

könnte mir mal jemand einen tipp geben wie ich das unten angeführte Bespiel ändern muss…

Hauptprogramm****************************

switch(auswahl) {
 case 1: printf("verkauf");

 break;
 case 2: printf("Pfandrueckgabe");
 inhalt();
 pfand();
 vergleich ();
 break;

 }
}
Funktionen\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* (nur die Betroffenen)

void inhalt(void){

typedef struct {
 char name[20];
 int wert;
 int menge;
} inhalt;


 FILE \*in;
 int i;
 inhalt bestand[9]={
 {"Fuenf Cent",5,0},
 {"Zehn Cent",10,0},
 {"Zwanzig Cent",20,0},
 {"Fuenfzig Cent",50,0},
 {"Ein Euro",100,0},
 {"Zwei Euro",200,0},
 {"Cola",110,0},
 {"Bluna",70,0},
 {"Wasser",65,0}};

 in=fopen("bestand.dat","r");

 for(i=0;i=1&&bestand[1].menge\>=1){ 
 printf("Bitte Wechselgeld entnehmen!");
 neu5er=bestand[0].menge-1; 
 neu10er=bestand[1].menge-1;}
else if (bestand[0].menge\>=3&&bestand[1].menge\>=0){
 printf("Bitte Wechselgeld entnehmen!");
 neu5er=bestand[0].menge-3;} 

 else{printf("Rücknahme nicht möglich!");}

(PS: mit entschuldigt eventuell falsche Fachausdrücke und den unübersichtlichen Aufbau)

vielen dank schon mal im Vorraus

_[MOD]:

-Tags hinzugefügt, bitte in Zukunft selbst machen_ 

Hallo Matze,

ich bin mir nicht 100% sicher (C99 ist schon ein bisschen herr bei mir) aber du musst dein „struct“ Konstrukt ausserhalb der Funktion (am besten im Datei Gültigkeitsbereich) deklarieren und erst innerhalb der Funktion ein Objekt dieser Struktur anlegen, so sollte es meiner Meinung nach klappen!

[MOD]: Vollzitat gelöscht

Hallo Fragewurm,

  1. Da fehlt mindestens ein „}“ vor
    void vergleich (void){

  2. Alles was innerhalb eine Funktion deklariert wird, ist lokal.
    Auuserhalb von „void inhalt(void)“ sind „typedef inhalt“ und „inhalt bestand[9]“ unbekannt.

  3. Kommt noch hinzu, dass beim Verlassen von „void inhalt(void)“ auch „inhalt bestand[9]“ nicht mehr existiert.

  4. Da du eine globale Variable brauchst, musst du „inhalt bestand[9]“, und natürlich auch das typedef, ausserhalb einer Funktion deklarieren.
    Dabei ist noch zu beachten, dass die Deklaration vor der ersten Verwendung gemacht werden muss.

MfG Peter(TOO)