[Powered by Google Translate] [Командната линија аргументи]
[Кристофер Вартоломеј - Универзитетот Харвард]
[Ова е CS50 - CS50.TV]
А корисна карактеристика на програмата е да се прифати корисник влез.
Досега, ние сме истражено некои функции во рамките на CS50 библиотека
да го прифати корисник влез, како што се "добие стринг"
кој поттикнува на корисникот, додека апликацијата е водење, за низа.
>> Сепак, постојат случаи каде што сакате да ја покажете вашата програма влез
пред да се всушност работи.
На овој начин, вие не треба да побара дополнителни информации од Вашиот корисникот
при извршување едноставна задача.
Преземе, на пример, mv или преместување команда во UNIX.
Оваа команда овозможува на корисникот да преместите датотека од едно место до друго.
Според упатството страници, mv прифаќа две командната линија аргументи:
на датотеката што се пресели и локацијата на датотеката е преместена.
Па овој пример има команда со два аргументи.
Така како ние да кажам нашата C програма да ги користат овие командната линија аргументи?
>> Па, излегува дека главните, кои ние ги користиме во сите C програми, има една тајна.
Главната прифаќа два параметри: argc и argv.
Ајде да одиме во текот на овие термини.
>> Првиот параметар, argc, која се залага за аргумент брои,
има податоци за видот на број.
На argc параметар содржи број на аргументи, вклучувајќи го и командата.
Во нашиот потег команда, иако имаме само два аргументи екранот,
вредност argc ќе биде 3.
Вториот параметар, argv, која се залага за аргументот за векторот,
е низа на знак совети кои укажуваат на жици.
>> Ова значи дека секој елемент во argv, почнувајќи од нула,
содржи командата и аргументи.
На пример, avg [0], која ќе се однесуваат како argv нула,
секогаш ќе содржи командата која се кандидира -
во овој случај, mv.
avg [1] ќе содржат првиот аргумент, file.txt,
и avg [2] ќе содржи вториот аргумент, ~ / cs50 /.
Последниот аргумент на argv секогаш ќе биде нула.
Значи, да ги имплементираат овие командната линија аргументи.
Во претходните вежби, ние сместени празнина, што значи ништо, како параметар главниот е.
Меѓутоа, со цел за нас да го користите командната линија аргументи,
ние треба да се отстрани неважечки и место во внатрешноста на главниот int argc, char * avg [].
Сега, за да пристапите на целата елемент од argv, кои се вашите аргументи,
можете едноставно да iterate, или телефонска линија, преку низа допаѓа ова.
Значи, во внатрешноста на телото главната е, ние ќе одиме напред и напишете за телефонска линија:
за (int i = 0; з <argc; i + +).
>> Ние не треба кадрава голема заграда тука, бидејќи ние сме само извршување на една линија код
во телото на овој циклус.
Ќе одиме напред и хит табот еднаш,
потоа внеси printf ("avg [% d], да ја претставува целобројна вредност,
е% s, за стринг, а потоа новата линија карактер.
Тогаш ние обезбеди printf i за тековната повторување на јамка
и avg [i] за стринг застапеност на тековната командната линија аргумент.
Кога ќе го стартувате со два аргументи, ќе видиме аргументите кои се прикажани во терминал.
Понапред се рече дека argv одржа низа на знак покажувачи.
>> Значи, ако ова е случај, како ние да потоа пристап индивидуални ликови во секој аргумент?
На пример, што ако сакав да барате специфичен карактер во првиот аргумент?
Добро, одговорот е дека ние треба да се применуваат вгнездени јамка
кои потоа ќе iterate преку секој од елементите во аргумент стринг.
Ова е како да го направи тоа.
>> Прво, ние ќе треба да се направи копија на example2.c.
Потоа, во внатрешноста на првиот за телефонска линија,
ние ќе додадете дополнителни за телефонска линија.
Така за (int j = 0, n = strlen (avg [i]),
кој потоа ни ја дава должината на тековната аргумент,
; Ѕ <n; ѕ + +)
Ние ќе се печати на локацијата на секој карактер
внатрешноста на тековната расправија со користење printf.
Значи, printf ("avg [% d], да ги застапува Индексот на тековната аргумент,
тогаш [% d] уште еднаш, да ги претставуваат тековните карактер на тековната аргумент,
е:% в, за тековната карактер во аргументот.
И на крај, ние обезбеди printf со индекс на надворешниот циклус, јас,
потоа индексот на внатрешната јамка.
>> И нашиот последен аргумент за printf е вистински лик од аргументи, под услов
на командната линија.
Сега, бидејќи јас се користи низа функција strlen да се добие на должина на стринг,
Јас, исто така треба да додадете string.h библиотека на врвот на нашата вклучува.
Значи, да го сторат тоа, ќе одат нагоре, и само под stdio.h, ние ќе треба да се направи
# Include .
>> Значи, ајде да ги собере и да ја стартувате и ги обезбеди вистински аргумент.
>> И, како што можеме да видиме, сега имаме точната локација на секој поединец знак на аргумент.
Значи тоа е тоа. Јас сум Кристофер Вартоломеј, тоа е CS50.
[CS50.TV]