[Novize] File I/O falsch verstanden? Möchte switch statement extern ausführen!
-
Hallo Leute!
Habe mich gerade an das Thema File I/O herangewagt. Nach mehreren Videos und Dokumentationen bleiben mir aber immernoch paar Fragen offen.
Ich verstehe den Sinn von File I/O um auf externe Dateien wie z.b. Datenbanken zuzugreifen. Ich verstehe auch diese zu erstellen und einzulesen. Jedoch dachte ich bisher immer ich könnte auch z.b. statements extern ablagern und diese dann im "Haupt Code" dann per File I/O wieder einlesen und ausführen lassen, das Ganze damit die Übersicht gewahrt bleibt.
Nun habe ich hier einen Auszug mit dem unvollständigem Versuch "items.txt" einzulesen.
[...] if (Menu == 1) { do { askMovementKey(USERINPUT); ItemChance = randomNumber(); if (ITEMCHANCEBLOCK == 0) { FILE *file; f = fopen(items.txt,"r"); } } while(y <= 50 && y >= -50 && x <= 50 && x >= -50); } else if (Menu == 2) { printf("Options"); } else if (Menu == 3) { printf("Help"); } else { printf("You entered a wrong number"); } [...]
Und hier die "items.txt"
switch(ItemChance) { case 1: { printf("You found an apple!\n"); checkitem = "apple"; Inventory(checkitem); break; } case 2: { printf("You found a bread!\n"); checkitem = "bread"; Inventory(checkitem); break; } case 3: { printf("You found a chocolate bar!\n"); checkitem = "chocolate"; Inventory(checkitem); break; } case 4: { printf("You found a soda!\n"); checkitem = "soda"; Inventory(checkitem); break; } case 5: { printf("You found a bag of chips!\n"); checkitem = "chips"; Inventory(checkitem); break; } case 6: { printf("You found a can of beans!\n"); checkitem = "beans"; Inventory(checkitem); break; } case 7: { printf("You found a baseball bat!\n"); checkitem = "baseball_bat"; Inventory(checkitem); break; } }
Meine Absicht ist es jetzt im Bereich Line 12 im Haupt Code die items.txt einzulesen und auszuführen. Im Endeffekt so wie Funktionen auch funktionieren - ich deklariere diese ja auch "nach" der Main Funktion. Jedoch möchte ich jetzt außerhalb der Haupt Datei ein statement reinholen.
Ist das Ganze überhaupt so Möglich? Wenn ja wie
gruß Charlie
-
Dann hast du das Prinzip von einem Compiler nicht verstanden.
Das geht so nicht.
Die Programme müssen vorher übersetzt (compiliert) und zusammengebunden (gelinkt) werden.
Wenn du Bereiche auslagern willst, schau dir DLL oder static Library an.
Aber auch die musst du vorher compilieren.
-
Warum willst du den Code überhaupt auslagern?
-
Falke88 schrieb:
Jedoch möchte ich jetzt außerhalb der Haupt Datei ein statement reinholen.
Ist das Ganze überhaupt so Möglich? Wenn ja wie
gruß Charlie
Ja, das ist ganz einfach möglich, speichere den Text in einer Datei und lies ihn zur Laufzeit ins Programm ein.
// statements.txt You found an apple! You found a bread! You found a chocolate bar!
-
Falke88 schrieb:
... damit die Übersicht gewahrt bleibt.
Ach ich glaube ich weiß, worauf du hinaus willst.
Um Übersicht zu bewahren lagert man solche Programmteile in separate *.c und *.h Dateien (Module) aus und bindet diese per #include Anweisungen ein.
-
Ich glaube, dass hier Compiler und Interpreter missverstanden werden.
C ist nicht, wie Basic usw. eine Interpretersprache, d. h., es kann keinen Text mit Befehlen "nachübersetzen". Das ist beispielsweise hinderlich, wenn man ein Programm zur Berechnung einer vom Benutzer eingegebenen Funktion realisieren möchte.
Falke88 wünscht sich wahrscheinlich so etwas wie eval() aus JavaScript.