002
09.09.2003, 01:39 Uhr
Pablo
Supertux (Operator)
|
Zu 1: Die Variable argc sagt, wie viele Argumente vorhanden sind. Es gibt immer mindestens ein Argument, d.h argc ist immer mindestens 1.
Der Bereich von argv**, der die Argumente enthält ist [0, n-1], d.h. wenn n = 1 ==> keine Argumente. Das erste Argument (argv[0]) ist immer der Nam des Programmes, d.h. wie du das Programm ausgeführt hast.
Welche Argumente und in welchen Format liegt nur an dir selbst, denn nur du (als Programmier) weißt, welche Argumente zu erlaubt sind, und die Reihenfolge, usw. afür musst du eine eigene Parse-Funktion machen.
Beispiel: (in C) das Programm "myargs" Es wird wie folgt ausgeführt. (Und nur diese Argumente sind gültig)
Code: |
$ ./myargs arg1 arg2 arg3 -x -y -q -z
|
Wenn du argc abfragst, dann kriegst du 8 und das ist der Inhalt der 8 Strings argv[0]="./myargs" -- argv[1]="arg1" argv[2] = "arg2" -- argv[3] = "arg3" argv[4] = "-x" -- argv[5] = "-y" argv[6] = "-q" -- argv[7] = "-z"
Wie kannst du eine Funktion, die diese Parameter findet? Ich stelle dir eine sehr einfache Funktion vor:
C++: |
#include <stdio.h> #include <string.h> int main(int argc, char** argv) { int i,j=0; char str[255]; printf("Du hast das Programm so ausgeführt: %s\n", argv[0]); for(i=1; i<argc; ++i) { if (!strcmp(argv[i], "arg1")) // strcmp liefert 0 wenn beide strings gleich sind j = 1; if (!strcmp(argv[i], "arg2")) j = 1; if (!strcmp(argv[i], "arg3")) j = 1; if (!strcmp(argv[i], "-x")) j = 1; if (!strcmp(argv[i], "-y")) j = 1; if (!strcmp(argv[i], "-q")) j = 1; if (!strcmp(argv[i], "-z")) j = 1; if(j) sprintf(str, "bekanntes Argument: %s", argv[i]); else sprintf(str, "unbekannes Argument: %s", argv[i]); printf("Das %d. Argument ist ein %s\n", i, str); j=0; } }
|
Das ist eine naive Variante, man kann bessere machen, aber das geht davon ab, wie die Argumente aussehen. Es gibt Programme, die -xyz als ein Argument xyz betrachten. Programme wie tar betrachten das als -x -y -z. Das ist natürlich komplizierter. Es wird auch schiewrig, wenn deine Argumente eine Reihenfolge haben müssen. In diesem Beispiel spielt die Reihenfolge keine wichtige Rolle. Probier dieses Programm und führe es mit verschiedenen Argumenten (gültige und ungültige) und sieh mal, was du kriegst.
Zu 2: Guck mal hier weiter nach. In der Woche haben wie das Thema "wie kann ich von einer txt Datei lesen" mindestens 2 oder 3 Mal besprochen. -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 09.09.2003 um 01:43 Uhr von Pablo Yanez Trujillo editiert. |