Programm mit Variabler Eingabe(wie Bash o.Ä)
-
So, oder die Commandline mit an die Funktion übergeben, so dass sie diese selber interpretieren muss/kann. Das hat den Vorteil, dass das Hauptprogramm nichts vom Aufbau der Parameter wissen muss. So kannst du recht flexibel neue Funktionalität hinzufügen, ohne bestehende Funktionen anpassen zu müssen.
-
Du meinst mit "die Commandline mit an die Funktion übergeben"
Einfach den char* argv[] mit an die Funktion übergeben und die macht das jeweilige parsing selber?
-
Schreibe du eine standardkonforme Eingabefunktion für Strings und werte diesen String dann mittels switch/case aus:
char *getline(void) { static char *s; char c; int i=1; s=realloc(s,1); *s=0; while( (c=getchar())!='\n' && !feof(stdin) ) strncat(s=realloc(s,++i),&c,1); return s; } int main() { char *s; while( s=getline() ) switch( *s ) { case 'a': addiere(s+1);break; case 'm': multipliziere(s+1);break; default : return puts("Fehler"),1; } return 0; }
Die eigentliche Arbeit kapselst du in den jeweiligen Funktionen, die als einzigen Parameter den Eingabestring enthalten und das Aufsplitten der Elemente selbst übernehmen.
-
Alles klar, danke für die Tipps
-
Du solltest auch die Möglichkeit einbauen die Parameter von stdin oder einer Datei zu lesen.
-
Ahh ja da fällt mir noch was ein wo du das sagst DirkB.
Die Aufgabe kommt ja von unserem Uni-Prof, und damit er nicht das komplette Programm durchtesten musst bei jedem Studenten gibt er eine "Testdatei" vor welche er in das Programm speißt, aber nicht etwa als Parameter sondern so:vector.exe < eingabeDatei.txt > ausgabedatei.txt
Das "> ausgabedatei.txt" versteh ich ja noch, das der output umgeleitet wird, aber ich wüsste jetzt nicht auf anhieb wie ich mit dem "< eingabeDatei.txt" umzugehen habe. Kann mir das jemand erklären?
-
Firefighter schrieb:
Das "> ausgabedatei.txt" versteh ich ja noch, das der output umgeleitet wird, aber ich wüsste jetzt nicht auf anhieb wie ich mit dem "< eingabeDatei.txt" umzugehen habe. Kann mir das jemand erklären?
Das lenkt die Standardeingabe auf den Inhalt von eingabeDatei.txt. Insofern würde ich auch die Bemerkung zum Lesen aus Dateien ignorieren. Es reicht, von der Standardeingabe zu lesen. Wenn der Nutzer eine Datei als Quelle der Befehle möchte kann er die Datei als Standardeingabe benutzen.
-
imho ist gemeint die main als:
int main (int argc, const char* argv[])
zu schreiben und mit dem argv auf die eingabeparameter (< und name.txt) zuzugreifen. diese sollten sich an index 1 und 2 befinden
-
Wutz schrieb:
while( (c=getchar())!='\n' && !feof(stdin) ) strncat(s=realloc(s,++i),&c,1);
wie durchgeknallt muß man sein, um sowas rauszuhauen?
-
orioon schrieb:
imho ist gemeint die main als:
int main (int argc, const char* argv[])
zu schreiben und mit dem argv auf die eingabeparameter (< und name.txt) zuzugreifen. diese sollten sich an index 1 und 2 befindenDiese Sachen bekommt das Programm aber nicht mitgeteilt, weil die Shell das schon rausfiltert und entsprechend behandelt.