[Powered by Google Translate] [Аргументы командной строки]
[Кристофер Варфоломея - Гарвардский университет]
[Это CS50 - CS50.TV]
Полезная функция для программы является ввод данных пользователем.
До сих пор мы рассмотрели некоторые функции в библиотеке CS50
принимать пользовательский ввод, такие как "получить строку"
которая запрашивает у пользователя, в то время как приложение запущено, для строки.
>> Тем не менее, бывают случаи, когда вы хотите обеспечить вашу программу вход
Перед оно на самом деле работает.
Таким образом, вам не нужно просить дополнительную информацию от ваших пользователей
При выполнении простых задач.
Возьмем, к примеру, мВ или движение команды в UNIX.
Эта команда позволяет пользователю перемещать файлы из одного места в другое.
По словам руководства страниц, М. В. принимает два аргумента командной строки:
файл, который в настоящее время переехал и расположение файла перемещается в.
Так что этот пример имеет команду с двумя аргументами.
Итак, как мы говорим нашим C программы, чтобы использовать эти аргументы командной строки?
>> Что ж, оказывается, что главный, который мы используем во всех программах C, есть секрет.
Главная принимает два параметра: ARGC и ARGV.
Давайте разберем эти термины.
>> Первый параметр, агдс, что означает количество аргументов,
имеет тип данных целое число.
Агдс параметр содержит число аргументов, в том числе команды.
В нашей команды перемещения, хотя мы только два аргумента отображается,
Значение ARGC будет 3.
Второй параметр, ARGV, которая выступает за аргумент вектора,
представляет собой массив символов указателей, которые указывают на строки.
>> Это означает, что каждый элемент в ARGV, начиная с нуля,
содержит команду и аргументы.
Например, ARGV [0], которого я буду называть ARGV нуля,
всегда будет содержать команду, которая в настоящее время запуска -
В этом случае, мв.
ARGV [1] будет содержать первый аргумент, file.txt,
и ARGV [2] будет содержать второй аргумент, ~ / CS50 /.
Последний аргумент ARGV всегда будет нулевым.
Так что давайте реализации этих аргументов командной строки.
В предыдущих упражнениях, мы разместили недействительными, то есть ничего, как основной параметр в.
Однако, для того, чтобы мы использовали аргументы командной строки,
нам нужно удалить недействительным и место внутри основного Int агдс, символ * ARGV [].
Теперь, чтобы получить доступ ко всему элементов из ARGV, которые являются вашими аргументами,
Вы можете просто повторять, или петля, через массив, как это.
Таким образом, внутри тела основные, мы собираемся пойти дальше и ввести для цикла:
для (INT = 0; I <агдс, я + +).
>> Мы не нуждаемся в фигурные скобки здесь, потому что мы только выполнив одну строку кода
в теле этого цикла.
Мы будем идти вперед и ударил вкладке один раз,
затем введите Е ("ARGV [% D], представляют целое число,
является% с, строки, то символ новой строки.
Тогда мы предоставляем Printf я для текущей итерации
и ARGV [я] для строковое представление текущего аргумента командной строки.
Когда мы запустим его с двумя аргументами, то мы увидим аргументов отображается в терминале.
Ранее мы говорили, что ARGV состоялась массив символов указателей.
>> Так что, если это так, то как же мы тогда доступ к отдельным символам в каждый аргумент?
Например, что если бы я хотел, чтобы искать специфику в первый аргумент?
Ну, ответ в том, что мы должны применить вложенный цикл
, которые затем итерацию каждого из элементов в строке аргумента.
Это, как вы это делаете.
>> Во-первых, мы собираемся сделать копию example2.c.
Затем внутри первого цикла,
Мы собираемся добавить дополнительный цикл.
Таким образом, для (Int J = 0, п = StrLen (ARGV [я]),
, который затем дает нам длину текущего аргумента,
, J <п, J + +)
Мы собираемся напечатать расположение каждого символа
Внутри текущего аргумента с помощью Printf.
Таким образом, Е ("ARGV [% D], представляют индекс текущего аргумента,
Затем [% D] еще раз, чтобы представить текущий символ текущего аргумента,
является:% C, на текущий символ в аргументе.
Наконец, мы предоставляем Printf с индексом внешнего контура, я,
то индекс внутреннего цикла.
>> И наш последний аргумент Printf является фактическим персонаж из аргументов при условии,
в командной строке.
Теперь, потому что я использовал строки функции StrLen, чтобы получить длину строки,
Я должен также добавить string.h библиотеки к началу нашего включает в себя.
Таким образом, чтобы сделать это, мы пойдем, и только под stdio.h, мы собираемся сделать
# Включить .
>> Итак, давайте скомпилировать и запустить и обеспечить его фактического аргумента.
>> И, как мы видим, теперь у нас есть точное местоположение каждого отдельного символ в аргументе.
Так вот оно что. Я Кристофера Варфоломей, это CS50.
[CS50.TV]