[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]