Danke, aber das ist dann doch mehr Aufwand wie es am Ende nutzen würde.
Danke, aber das ist dann doch mehr Aufwand wie es am Ende nutzen würde.
ich denke schon, dass das geht.
Du liest aus einer Datei einen Variablen-Namen als Variablen-String (z.B. char * strbuf), im einfachsten Fall einfach nur ein Zeichen oder wenigstens gleich lange strings.
zunächst deklarierst du deine Funktionen
dann liest du aus deiner Datei:Code:void umwandeln() { }; void loeschen() { }; void ausschalten() { };
Den String übergibst du deiner Funktion tuwas():Code:FILE * pFile; char strbuf[10]; pFile = fopen ("myfile.txt" , "r"); fgets (strbuf, 6, pFile);
Ich vermute, das könnte so gehen.Code:void tuwas(char * str) { if (str == "umwand") { umwandeln() }; else if (str == "loesch") { loeschen() }; else if (str == "aussch") { ausschalten() }; }
Am Schluss nicht vergessen:
Code:fclose (pFile);
So habe ich es derzeit laufen![]()
das liest sich bei dir aber anders: du hast geschrieben, du hättest es über Nummern gemacht, und wolltest stattdessen Funktionsnamen lesen, denn "auf diese Weise wäre es übersichtlicher da es ja eine Bezeichnung und keine Nummer wäre."
Richtig. So habe ich das auch. Aber das ist eine andere Baustelle und ich wollte wissen ob ich aus einer Datei nur eine Nummer einlesen kann, welche ich über eine SWITCH dann verwende, oder ob ich auch anstelle der Nummer auch einen Namen der Funktion verwenden kann. So habe ich mittlerweile 7 Funktionen, welche ich auf diese Weise mit SWITCH aufrufe. Das läuft und kann auch so bleiben. Die 7 kann ich mir grade noch so merken, welche Zahl welche Funktion letzten Endes auslöst.
Da ich nun aber das Ganze noch ausbaue und dafür eine neue SWITCH eigentlich einbauen wollte, kam mir der Gedanke, da ich schätzungsweise 50 Funktionen nutzen will (nicht alles die selben Funktionen, nur eben auch mal mit verschiedenen Variablen), dass es mit Namen doch übersichtlicher werden würde. Da das aber nicht klappt und es mit den Variablen auch einfacher ist mit der IF Variante, habe ich es eben auf diese Weise gelöst.
Ich tue also Beides, nur bei dem Problem, weshalb ich die Frage gestellt habe, mit IF. Die bereits fertige Geschichte mit SWITCH.
switch kann bei C immer nur Integer Konstanten verwenden. Diese werden vom Compiler in goto Sprungadressen umkompiliert.
Zwar tut switch im Endeffekt nicht viel anderes als if, aber if ist der mächtigere Befehl in C, denn if kann alle möglichen Bedingungen und Vergleiche verarbeiten.
Ich weiss. Dazu ist es eben auch übersichtlicher. Für mein erstes Problem ist SWITCH aber in Ordnung. Wie gesagt, für das nächste Problem ist das Ganze wieder auf IF aufgebaut![]()
Lesezeichen