Hi!
Ich arbeite gerade an einem kleinen C-Programm, bei dem über stdin Befehle eingegeben werden (z.B. open, close, help, ...). Und je nach Befehl wird halt eine Funktion aufgerufen; gibt es den Befehl nicht, soll eine Fehlermeldung kommen.
Im Moment habe ich das mit etlichen if- Abfragen gelöst, also ca. so:
Funktioniert zwar wunderbar, allerdings wird die Liste an if-Abfragen mit der steigenden Anzahl an möglichen Befehlen immer länger und unübersichtlicher. Und jetzt wollte ich fragen, ob es für dieses Problem eine elegantere Lösung gibt?
Ich hab schon an ein enum gedacht, dass alle Befehle enthält, damit ich dann den eingegebenen Befehl im enum suchen kann und mit einer switch-Anweisung die jeweilige Funktion aufrufe. Allerdings habe ich es bis jetzt noch nicht geschafft, bzw. ich weiß auch nicht, ob es überhaupt so geht und/oder ob es evtl. eine noch bessere Lösung gibt.
mfg
Ich arbeite gerade an einem kleinen C-Programm, bei dem über stdin Befehle eingegeben werden (z.B. open, close, help, ...). Und je nach Befehl wird halt eine Funktion aufgerufen; gibt es den Befehl nicht, soll eine Fehlermeldung kommen.
Im Moment habe ich das mit etlichen if- Abfragen gelöst, also ca. so:
Code:
command = [String, der von stdin eingelesen wurde];
if (strcmp(command, "open") == 0)
{
runOpen();
}
...
Funktioniert zwar wunderbar, allerdings wird die Liste an if-Abfragen mit der steigenden Anzahl an möglichen Befehlen immer länger und unübersichtlicher. Und jetzt wollte ich fragen, ob es für dieses Problem eine elegantere Lösung gibt?
Ich hab schon an ein enum gedacht, dass alle Befehle enthält, damit ich dann den eingegebenen Befehl im enum suchen kann und mit einer switch-Anweisung die jeweilige Funktion aufrufe. Allerdings habe ich es bis jetzt noch nicht geschafft, bzw. ich weiß auch nicht, ob es überhaupt so geht und/oder ob es evtl. eine noch bessere Lösung gibt.
mfg