[Powered by Google Translate] [Аргументи от командния ред]
Кристофър Вартоломей - Харвардския университет]
[Това е CS50 - CS50.TV]
Полезна функция за програма е да се приеме въвеждане от потребителя.
До този момент, ние сме проучване на някои функции в библиотеката CS50
да приеме приноса на потребителите, като например "взимането"
, която подсказва на потребителя, докато приложението работи, за низ.
>> Въпреки това, има случаи, когато искате да предоставите вашия принос програма
преди тя действително работи.
По този начин, не е нужно да поиска допълнителна информация от вашия потребител
по време на изпълнение на проста задача.
Вземете, например, се движат МПС или команда в UNIX.
Тази команда позволява на потребителя да преместите файл от едно място на друго.
Според справочните страници, MV приема два аргумента от командния ред:
файл, който се премества и местоположението на файла се премества в.
Така че този пример има команда с два аргумента.
Е, как да кажем на нашите в програмата, за да използват тези аргументи от командния ред?
>> Е, оказва се, че основното, което ние използваме във всички програми на C, има тайна.
Основна приема два параметъра: argc и argv.
Нека вървим по тези условия.
>> Първия параметър, argc, което е съкращение за аргумент брой,
има данни тип цяло число.
Argc параметър съдържа редица аргументи, включително командата.
В нашето движение команда, въпреки че само два аргумента показват,
стойност argc ще бъде 3.
Вторият параметър, argv, което е съкращение от вектора с аргументи,
е масив от Чар указатели, които сочат към струни.
>> Това означава, че всеки елемент в argv, като се започне от нула,
съдържа командата и аргументи.
Например, argv [0], които ще се отнасят до argv нула,
винаги ще съдържа командата, която се провежда
в този случай, МПС.
argv [1] ще съдържа първият аргумент, file.txt,
argv [2] ще съдържа втория аргумент, cs50 ~ / /.
Последният аргумент на argv винаги ще бъде нула.
Така че нека да прилагат тези аргументи от командния ред.
В предишните упражнения, ние поставихме невалидни, което означава нищо, като параметър главната.
Въпреки това, за нас, за да използвате аргументи от командния ред,
ние трябва да премахнете невалидни и място за вътрешността на главния INT argc, знак * argv [].
Сега, за достъп до целия елемент от argv, които са аргументите си,
можете просто да превъртате, или линия, чрез масив по този начин.
Така че, в рамките на тялото главната, ние отиваме да вървим напред и да въведете линия:
за (INT I = 0; I <argc, аз + +).
>> Ние не се нуждаем фигурна скоба тук, защото ние сме само при стартиране на една линия на код
в тялото на този цикъл.
Ние ще отидем напред и удари раздела веднъж,
след това въведете ФОРМАТ ("argv [% г], да представлява цяло число стойност,
%, за низ, а след това новата линия характер.
Тогава ние предлагаме ФОРМАТ за текущата итерация на цикъла
и argv [] за низ представителство на текущата аргумент на командния ред.
Когато го стартирате с два аргумента, ще видим аргументите да бъдат показани в терминала.
Рано казахме, че argv проведе масив от Чар указатели.
>> Така че, ако това е така, как ние след това достъп до отделните герои в всеки аргумент?
Например, какво ще стане, ако исках да се търси специфичен характер в първия аргумент?
Ами, отговорът е, че ние трябва да се прилагат вложени линия
, които след това ще превъртите през всеки един от елементите в аргумент низ.
Това е, как да го направите.
>> Първо, отиваме да се направи копие на example2.c.
След това, в рамките на първия за контур,
отиваме да добавите допълнително за контур.
Така че за (Int J = 0, N = strlen (argv []),
които след това ни дава дължината на текущата аргумент,
; <N; + +)
Отиваме да отпечатате местоположението на всеки един от героите
във вътрешността на текущия спор с помощта ФОРМАТ.
Така че, ФОРМАТ ("argv [% г], да представлява индексът на текущата аргумент,
[% г] отново, за да представят на текущия символ на текущия спор,
е:% C, за текущия символ в спора.
На последно място, ние предлагаме ФОРМАТ с индекса на външния контур, аз
тогава индекс на вътрешната линия.
>> И последната ни аргумент за ФОРМАТ е действителният герой от предоставената аргумент
в командния ред.
Сега, тъй като използва низ функция strlen, за да се получи дължина на низ,
Трябва също да добавя string.h библиотека до върха на нашия включва.
Така че, да направим това, ние ще отидем, и точно под stdio.h, ние ще направим
# Включват .
>> Така че, нека да съставят и тичам и да го предостави реален аргумент.
>> И както можем да видим, ние сега имаме точното местоположение на всеки отделен Чар в спора.
Така че, това е всичко. Аз съм Кристофър Вартоломей, това е CS50.
[CS50.TV]