[Powered by Google Translate] [Command-Line Arguments]
[Christopher Bartholomew - Harvard University]
[Dies ist CS50 - CS50.TV]
Eine nützliche Funktion für ein Programm ist auf Benutzereingaben akzeptieren.
Bisher haben wir einige Funktionen innerhalb der CS50-Bibliothek erkundet
Benutzereingaben, wie anzunehmen "get Zeichenfolge"
die den Benutzer auffordert, während die Anwendung ausgeführt wird, für einen String.
>> Es gibt jedoch Fälle, in denen Sie Ihr Programm Input liefern wollen
bevor es tatsächlich läuft.
Auf diese Weise brauchen Sie nicht, um zusätzliche Informationen von Ihrem Benutzer fragen
während der Ausführung eine einfache Aufgabe.
Nehmen Sie zum Beispiel die mv oder MOVE-Befehl in UNIX.
Dieser Befehl ermöglicht es dem Benutzer, eine Datei von einem Ort zum anderen zu bewegen.
Nach den Handbuchseiten akzeptiert mv zwei Kommandozeilen-Argumente:
Die Datei, die bewegt und die Lage der Datei wird verschoben.
So dieses Beispiel einen Befehl mit zwei Argumenten.
Wie können wir also sagen, unser C-Programm, um diese Befehlszeilenargumente nutzen?
>> Nun stellt sich heraus, dass die wichtigsten, die wir in allen C-Programme, ein Geheimnis hat.
Haupt akzeptiert zwei Parameter: argc und argv.
Lasst uns über diese Begriffe gehen.
>> Der erste Parameter, argc, die für argument count steht,
hat einen Datentyp Integer.
Die argc Parameter enthält die Anzahl der Argumente, einschließlich des Befehls.
In unserem Fahrbefehl, obwohl wir nur haben zwei Argumente angezeigt,
argc den Wert 3 sein.
Der zweite Parameter, argv, die für Argument-Vektor steht,
ist ein Array von char-Zeiger, die auf Strings.
>> Dies bedeutet, daß jedes Element in argv, von null beginnend,
enthält den Befehl und Argumente.
Zum Beispiel, argv [0], die ich als argv Null beziehen,
enthält immer den Befehl, der ausgeführt wird -
in diesem Fall mv.
argv [1] enthält das erste Argument, file.txt,
und argv [2] wird das zweite Argument enthalten, ~ / CS50 /.
Das letzte Argument argv wird immer null.
Also lasst uns bei der Umsetzung dieser Kommandozeilen-Argumente.
In vorangegangenen Übungen, legten wir nichtig, also nichts, als Haupt der Parameter.
Um jedoch für uns zu nutzen Befehlszeilenargumente,
wir brauchen für nichtig und im Inneren der wichtigsten int argc, char * argv [] entfernen.
Nun, um das gesamte Element von argv, die Ihre Argumente sind zuzugreifen,
Sie können einfach durchlaufen, oder eine Schleife durch das Array wie folgt.
Also, im Inneren der wichtigsten Körper, wir gehen voran gehen und geben Sie eine for-Schleife:
for (int i = 0; i <argc; i + +).
>> Wir brauchen keine geschweiften Klammer hier, weil wir nur die Ausführung sind eine Zeile Code
innerhalb des Körpers dieser Schleife.
Wir machen weiter und traf Registerkarte einmal,
dann printf geben ("argv [% d], um einen Integer-Wert repräsentieren,
ist% s, für Streichquartett, dann wird die neue Zeile.
Dann bieten wir printf i für die aktuelle Iteration der Schleife
und argv [i] für die String-Darstellung des aktuellen Kommandozeilen-Argument.
Wenn wir es laufen mit zwei Argumenten, dann sehen wir die Argumente, die im Terminal angezeigt.
Früher haben wir gesagt, dass die argv ein Array von char-Zeiger statt.
>> Also, wenn dies der Fall ist, wie können wir dann Zugriff auf einzelne Zeichen in jedem Argument?
Zum Beispiel, was passiert, wenn ich für ein bestimmtes Zeichen im ersten Argument aussehen wollte?
Nun, die Antwort ist, dass wir eine verschachtelte Schleife anwenden müssen
das wird dann durch jedes der Elemente im Argument String durchlaufen.
Dies ist, wie Sie es tun.
>> Zunächst werden wir eine Kopie der beispiel2.c machen.
Dann Innenseite der ersten zur Schleife,
werden wir eine zusätzliche for-Schleife hinzuzufügen.
So for (int j = 0, n = strlen (argv [i]),
das gibt uns dann die Länge des aktuellen Argument,
; J <n, j + +)
Wir werden die Position der einzelnen Zeichen gedruckt
Innenseite der aktuelle Argument mit printf.
Also, printf ("argv [% d], um den Index des aktuellen Argument vertreten,
dann [% d] noch einmal, um das aktuelle Zeichen des aktuellen Argument vertreten,
ist:% C, für das aktuelle Zeichen das Argument.
Schließlich sehen wir printf mit dem Index der äußeren Schleife, i,
dann wird der Index der inneren Schleife.
>> Und unser letztes Argument printf ist der eigentliche Charakter der Argumentation
auf der Kommandozeile.
Nun, da habe ich die String-Funktion strlen die Länge einer Zeichenkette zu erhalten,
Ich muss auch noch die string.h Bibliothek der Spitze unserer enthält.
So, das zu tun, wir gehen auf, und knapp stdio.h, wir tun
# Include .
>> Also, lasst uns kompilieren und laufen und es ein tatsächliches Argument.
>> Und, wie wir sehen können, haben wir nun die genaue Position jedes einzelnen char in der Argumentation.
Das ist es also. Ich bin Christopher Bartholomäus; dies CS50.
[CS50.TV]