1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Командне линије Аргументи] 2 00:00:02,000 --> 00:00:04,000 [Кристофер Вартоломеј - Универзитет Харвард] 3 00:00:04,000 --> 00:00:07,000 [Ово је ЦС50 - ЦС50.ТВ] 4 00:00:07,000 --> 00:00:11,000 Корисна функција за програм је да прихвати унос корисника. 5 00:00:11,000 --> 00:00:15,000 До сада смо истражили неке функције унутар ЦС50 библиотеци 6 00:00:15,000 --> 00:00:18,000 да прихвати унос корисника, као што су "добили ниску" 7 00:00:18,000 --> 00:00:23,000 који пита корисника, док апликација ради, за ниске. 8 00:00:23,000 --> 00:00:28,000 >> Међутим, постоје случајеви у којима желите да обезбедите свој допринос програма 9 00:00:28,000 --> 00:00:30,000 пре него што она заправо ради. 10 00:00:30,000 --> 00:00:34,000 На тај начин, не морате да питате додатне информације од вашег корисника 11 00:00:34,000 --> 00:00:38,000 приликом извршавања једноставан задатак. 12 00:00:38,000 --> 00:00:42,000 Узмимо, на пример, МВ или преместите команду на УНИКС-у. 13 00:00:42,000 --> 00:00:49,000 Ова команда омогућава кориснику да преместите датотеку са једне локације на другу. 14 00:00:49,000 --> 00:00:55,000 Према ручним страницама, мв прихвата два аргумента командне линије: 15 00:00:55,000 --> 00:01:00,000 фајл који се преселио и локацију датотеке се преселио у. 16 00:01:00,000 --> 00:01:06,000 Дакле, овај пример има команду са два аргумента. 17 00:01:06,000 --> 00:01:14,000 Па како да кажем наш Ц програм да искористи ове командне линије аргументе? 18 00:01:14,000 --> 00:01:20,000 >> Па, испада да је главни, коју користимо у свим програмима Ц, има тајну. 19 00:01:20,000 --> 00:01:26,000 Главни прихвата два параметра: аргц и аргв. 20 00:01:26,000 --> 00:01:28,000 Идемо преко ових услова. 21 00:01:28,000 --> 00:01:33,000 >> Први параметар, аргц, што је скраћеница за аргумената тачки, 22 00:01:33,000 --> 00:01:36,000 има тип података цео број. 23 00:01:36,000 --> 00:01:42,000 Тхе аргц параметар садржи бројне аргументе, укључујући команде. 24 00:01:42,000 --> 00:01:47,000 У нашем покрету команде, иако смо тек два аргумента прикаже 25 00:01:47,000 --> 00:01:50,000 аргц је вредност ће бити 3. 26 00:01:50,000 --> 00:01:56,000 Други параметар, аргв, што је скраћеница за аргумената вектора, 27 00:01:56,000 --> 00:02:01,000 је низ цхар показивача који указују на жицама. 28 00:02:01,000 --> 00:02:06,000 >> То значи да сваки елемент у аргв, почевши од нуле, 29 00:02:06,000 --> 00:02:09,000 садржи команду и аргументе. 30 00:02:09,000 --> 00:02:16,000 На пример, аргв [0], који ћу односе као аргв нула, 31 00:02:16,000 --> 00:02:20,000 ће увек садржати команду која се покреће - 32 00:02:20,000 --> 00:02:22,000 у овом случају, мв. 33 00:02:22,000 --> 00:02:28,000 аргв [1] ће садржати први аргумент, филе.ткт, 34 00:02:28,000 --> 00:02:37,000 и аргв [2] ће садржати другу аргумент, ~ / цс50 /. 35 00:02:37,000 --> 00:02:42,000 Последњи аргумент аргв ће увек бити нула. 36 00:02:42,000 --> 00:02:46,000 Дакле, хајде да спроведу ове командне линије аргументе. 37 00:02:46,000 --> 00:02:53,000 У претходним вежбама, поставили смо празнину, што не значи ништа, као параметар за МАИН. 38 00:02:53,000 --> 00:02:57,000 Међутим, како би за нас да користимо аргументе командне линије, 39 00:02:57,000 --> 00:03:12,000 морамо да уклоните неважећим и место унутар главног инт аргц, цхар * аргв []. 40 00:03:12,000 --> 00:03:17,000 Сада, да бисте приступили цео елемент из аргв, који су ваши аргументи, 41 00:03:17,000 --> 00:03:21,000 можете једноставно прелазили, или петље, преко низа овако. 42 00:03:21,000 --> 00:03:27,000 Дакле, унутар тела Главног, ми ћемо ићи напред и упишите за петље: 43 00:03:27,000 --> 00:03:37,000 фор (инт и = 0; и <аргц, и + +). 44 00:03:37,000 --> 00:03:41,000 >> Не треба коврџаву протезу овде јер ми само извршава једну линију кода 45 00:03:41,000 --> 00:03:44,000 у телу ове петље. 46 00:03:44,000 --> 00:03:47,000 Ми ћемо ићи напред и ударио картицу једном, 47 00:03:47,000 --> 00:03:57,000 затим упишите принтф ("аргв [% д], представља целобројну вредност, 48 00:03:57,000 --> 00:04:06,000 је% с за стринг, а затим нова линија карактер. 49 00:04:06,000 --> 00:04:12,000 Онда смо принтф обезбедити ја за тренутну итерација петље 50 00:04:12,000 --> 00:04:18,000 и аргв [и] за гудачки представљање актуелног командне линије аргумента. 51 00:04:18,000 --> 00:04:25,000 Када смо га покренули са два аргумената, видећемо аргументе који се приказују у терминалу. 52 00:04:34,000 --> 00:04:38,000 Раније смо рекли да је аргв одржао низ цхар показивача. 53 00:04:38,000 --> 00:04:45,000 >> Дакле, ако је то случај, како ћемо онда приступити појединачне знакове на сваки аргумент? 54 00:04:45,000 --> 00:04:51,000 На пример, шта ако сам желео да тражим одређени карактер у првом аргументу? 55 00:04:51,000 --> 00:04:55,000 Па, одговор је да треба применити угнежђену петљу 56 00:04:55,000 --> 00:04:59,000 који ће затим прелазили кроз сваки од елемената у аргументу ниске. 57 00:04:59,000 --> 00:05:02,000 Ово је начин да то урадите. 58 00:05:02,000 --> 00:05:10,000 >> Прво ћемо да направимо копију екампле2.ц. 59 00:05:10,000 --> 00:05:13,000 Затим, унутар прве фор петљи, 60 00:05:13,000 --> 00:05:15,000 ћемо додати додатни фор петљи. 61 00:05:15,000 --> 00:05:28,000 Дакле, за (ј = 0, н = стрлен (аргв [и]), 62 00:05:28,000 --> 00:05:32,000 што онда даје нам дужину тренутне аргумент, 63 00:05:32,000 --> 00:05:39,000 Ј <н ј + +) 64 00:05:39,000 --> 00:05:43,000 Идемо да одштампате локацију сваког знака 65 00:05:43,000 --> 00:05:47,000 унутар постојећег аргумента помоћу принтф. 66 00:05:47,000 --> 00:05:57,000 Дакле, принтф ("аргв [% д], представља индекс тренутног аргумент, 67 00:05:57,000 --> 00:06:05,000 онда [% д] поново да представља тренутни карактер садашњег аргумент, 68 00:06:05,000 --> 00:06:13,000 је:% ц, за текућу знака у аргументу. 69 00:06:13,000 --> 00:06:20,000 На крају, ми смо иф обезбедити са индексом спољне петље, и, 70 00:06:20,000 --> 00:06:22,000 онда индекс унутрашње петље. 71 00:06:22,000 --> 00:06:28,000 >> И наш последњи аргумент принтф је стварни лик из аргумента под условом 72 00:06:28,000 --> 00:06:31,000 у командној линији. 73 00:06:31,000 --> 00:06:37,000 Сада, јер сам користио функцију стрлен ниске добити дужину стринга, 74 00:06:37,000 --> 00:06:43,000 Такође морам додати стринг.х библиотеку на врх наше укључује. 75 00:06:43,000 --> 00:06:50,000 Дакле, да се то уради, ми ћемо ићи, и само под стдио.х, идемо да урадимо 76 00:06:50,000 --> 00:06:57,000 # Инцлуде <стринг.х>. 77 00:06:57,000 --> 00:07:02,000 >> Дакле, хајде да састави и води и обезбеди јој стварни аргумент. 78 00:07:09,000 --> 00:07:18,000 >> И, као што можемо да видимо, сада имамо тачну локацију сваког појединачног цхар у расправи. 79 00:07:18,000 --> 00:07:23,000 Дакле, то је то. Ја сам Кристофер Вартоломеј, ово је ЦС50. 80 00:07:23,000 --> 00:07:26,000 [ЦС50.ТВ]