[Powered by Google Translate] [Argumenty wiersza polecenia]
[Christopher Bartholomew - Harvard University]
[To jest CS50 - CS50.TV]
Przydatna funkcja dla programu jest, aby zaakceptować wprowadzone przez użytkownika.
Jak dotąd, mamy zbadać pewne funkcje w CS50 bibliotece
aby zaakceptować wprowadzone przez użytkownika, takie jak "dostać ciąg"
który pyta użytkownika, podczas gdy aplikacja jest uruchomiona, na sznurku.
>> Istnieją jednak przypadki, gdy chcesz zapewnić swój wkład programu
zanim zostanie ona uruchomiona.
W ten sposób, nie trzeba prosić o dodatkowe informacje od użytkownika
podczas wykonywania prostego zadania.
Weźmy, na przykład, MV lub polecenia poruszać się w systemie UNIX.
Polecenie to pozwala użytkownikowi przenieść plik z jednego miejsca do drugiego.
Według stron podręcznika, mv przyjmuje dwa argumenty wiersza poleceń:
Plik, który jest w ruchu i lokalizacji plik jest przeniesiony do.
Więc ten przykład ma polecenie z dwoma argumentami.
Jak więc powiedzieć nasz program C wykorzystać te argumenty wiersza polecenia?
>> Cóż, okazuje się, że główną, którego używamy we wszystkich programach w C, ma sekret.
Główne dwa parametry: argc i argv.
Chodźmy na te warunki.
>> Pierwszy parametr, argc, co jest skrótem od liczby argumentów,
ma typ danych integer.
Argc parametr zawiera liczbę argumentów, w tym poleceniu.
W naszym polecenia przesunięcia, choć mamy tylko dwa argumenty wyświetlane,
wartość argc będzie wynosić 3.
Drugi parametr, argv, co oznacza wektor argumentów,
jest tablicą char wskaźniki które wskazują na strunach.
>> Oznacza to, że każdy element argv począwszy od zera,
zawiera polecenia i argumenty.
Na przykład, argv [0], które ja określam jako argv zero
zawsze zawiera polecenie, które zostało uruchomione -
w tym przypadku, mV.
argv [1] będzie zawierać pierwszy argument, plik.txt,
i argv [2] należy do drugiego argumentu, ~ / CS50 /.
Ostatni argument argv zawsze będzie null.
Warto więc wdrożyć te argumenty wiersza poleceń.
W poprzednich ćwiczeniach, umieściliśmy pustkę, czyli nic, jako parametr funkcji main.
Jednakże, w celu dla nas do wykorzystania argumentów linii poleceń,
musimy usunąć wewnętrzną pustkę i miejsce głównej int argc, char * argv [].
Teraz, by przejść cały element z argv, które są twoje argumenty,
można po prostu iteracyjne lub pętla, przez tablicę jak ta.
Tak, wewnątrz korpusu głównego, my będziemy iść dalej i wpisz pętli for:
for (int i = 0; i <argc; i + +).
>> My nie potrzebujemy nawias klamrowy tutaj, ponieważ jesteśmy tylko wykonanie jednej linii kodu
w części tej pętli.
Idziemy do przodu i uderzył kartę raz,
następnie wpisz printf ("argv [% d], do reprezentowania wartość całkowitą,
% s, na łańcuch, a następnie znak nowego wiersza.
Następnie dostarcza printf I dla bieżącej iteracji
i argv [i] dla reprezentacji ciąg bieżącego argument wiersza polecenia.
Kiedy go uruchomić z dwoma argumentami, zobaczymy argumenty są wyświetlane w panelu.
Wcześniej powiedział, że argv odbyło tablicę char wskaźniki.
>> Tak więc, jeśli jest to przypadek, w jaki sposób, a następnie dostęp do poszczególnych znaków w każdym argument?
Na przykład, co jeśli chcę szukać szczególnym charakterze pierwszego argumentu?
Cóż, odpowiedź jest taka, że ​​musimy zastosować pętlę zagnieżdżoną
które będą następnie iterację wszystkich elementów w argumencie.
Jest to, jak to zrobić.
>> Po pierwsze, mamy zamiar zrobić kopię example2.c.
Potem, w środku pierwszej pętli for
mamy zamiar dodać dodatkowe pętli for.
Tak for (int j = 0, n = strlen (argv [i]),
które następnie daje nam długość bieżącego argumentu
, J <N, j + +)
Mamy zamiar wydrukować położenie każdego znaku
wewnątrz bieżącego argumentu używając printf.
Więc, printf ("argv [% d], do reprezentowania indeksu bieżącego argumentu
następnie [% d] po raz kolejny, do reprezentowania aktualny znak aktualnego argumentu
to: c%, w bieżącym znaku w argumencie.
Wreszcie, oferujemy printf z indeksu zewnętrznej pętli, i,
to indeks pętli wewnętrznej.
>> I nasz ostatni argument printf jest rzeczywistą postać z dostarczonej argumentu
w wierszu poleceń.
Teraz, ponieważ użyłem funkcji ciąg strlen uzyskać długość łańcucha,
Muszę również dodać string.h bibliotekę do góry nasz obejmuje.
Tak więc, aby to zrobić, pójdziemy w górę i tuż pod stdio.h, będziemy robić
# Include .
>> No to skompilować i uruchomić i zapewnić mu rzeczywistą argument.
>> I, jak widać, mamy dokładną lokalizację każdego znaku w argumencie.
Więc to jest to. Jestem Krzysztof Bartłomiej, to CS50.
[CS50.TV]