[Powered by Google Translate] [Командне линије Аргументи] [Кристофер Вартоломеј - Универзитет Харвард] [Ово је ЦС50 - ЦС50.ТВ] Корисна функција за програм је да прихвати унос корисника. До сада смо истражили неке функције унутар ЦС50 библиотеци да прихвати унос корисника, као што су "добили ниску" који пита корисника, док апликација ради, за ниске. Међутим, постоје случајеви у којима желите да обезбедите свој допринос програма пре него што она заправо ради. На тај начин, не морате да питате додатне информације од вашег корисника приликом извршавања једноставан задатак. Узмимо, на пример, МВ или преместите команду на УНИКС-у. Ова команда омогућава кориснику да преместите датотеку са једне локације на другу. Према ручним страницама, мв прихвата два аргумента командне линије: фајл који се преселио и локацију датотеке се преселио у. Дакле, овај пример има команду са два аргумента. Па како да кажем наш Ц програм да искористи ове командне линије аргументе? Па, испада да је главни, коју користимо у свим програмима Ц, има тајну. Главни прихвата два параметра: аргц и аргв. Идемо преко ових услова. Први параметар, аргц, што је скраћеница за аргумената тачки, има тип података цео број. Тхе аргц параметар садржи бројне аргументе, укључујући команде. У нашем покрету команде, иако смо тек два аргумента прикаже аргц је вредност ће бити 3. Други параметар, аргв, што је скраћеница за аргумената вектора, је низ цхар показивача који указују на жицама. То значи да сваки елемент у аргв, почевши од нуле, садржи команду и аргументе. На пример, аргв [0], који ћу односе као аргв нула, ће увек садржати команду која се покреће - у овом случају, мв. аргв [1] ће садржати први аргумент, филе.ткт, и аргв [2] ће садржати другу аргумент, ~ / цс50 /. Последњи аргумент аргв ће увек бити нула. Дакле, хајде да спроведу ове командне линије аргументе. У претходним вежбама, поставили смо празнину, што не значи ништа, као параметар за МАИН. Међутим, како би за нас да користимо аргументе командне линије, морамо да уклоните неважећим и место унутар главног инт аргц, цхар * аргв []. Сада, да бисте приступили цео елемент из аргв, који су ваши аргументи, можете једноставно прелазили, или петље, преко низа овако. Дакле, унутар тела Главног, ми ћемо ићи напред и упишите за петље: фор (инт и = 0; и <аргц, и + +). Не треба коврџаву протезу овде јер ми само извршава једну линију кода у телу ове петље. Ми ћемо ићи напред и ударио картицу једном, затим упишите принтф ("аргв [% д], представља целобројну вредност, је% с за стринг, а затим нова линија карактер. Онда смо принтф обезбедити ја за тренутну итерација петље и аргв [и] за гудачки представљање актуелног командне линије аргумента. Када смо га покренули са два аргумената, видећемо аргументе који се приказују у терминалу. Раније смо рекли да је аргв одржао низ цхар показивача. Дакле, ако је то случај, како ћемо онда приступити појединачне знакове на сваки аргумент? На пример, шта ако сам желео да тражим одређени карактер у првом аргументу? Па, одговор је да треба применити угнежђену петљу који ће затим прелазили кроз сваки од елемената у аргументу ниске. Ово је начин да то урадите. Прво ћемо да направимо копију екампле2.ц. Затим, унутар прве фор петљи, ћемо додати додатни фор петљи. Дакле, за (ј = 0, н = стрлен (аргв [и]), што онда даје нам дужину тренутне аргумент, Ј <н ј + +) Идемо да одштампате локацију сваког знака унутар постојећег аргумента помоћу принтф. Дакле, принтф ("аргв [% д], представља индекс тренутног аргумент, онда [% д] поново да представља тренутни карактер садашњег аргумент, је:% ц, за текућу знака у аргументу. На крају, ми смо иф обезбедити са индексом спољне петље, и, онда индекс унутрашње петље. И наш последњи аргумент принтф је стварни лик из аргумента под условом у командној линији. Сада, јер сам користио функцију стрлен ниске добити дужину стринга, Такође морам додати стринг.х библиотеку на врх наше укључује. Дакле, да се то уради, ми ћемо ићи, и само под стдио.х, идемо да урадимо # Инцлуде <стринг.х>. Дакле, хајде да састави и води и обезбеди јој стварни аргумент. И, као што можемо да видимо, сада имамо тачну локацију сваког појединачног цхар у расправи. Дакле, то је то. Ја сам Кристофер Вартоломеј, ово је ЦС50. [ЦС50.ТВ]