[Powered by Google Translate] [Komando-lerroko argumentuak]
[Christopher Bartolomé - Harvard Unibertsitatea]
[- CS50.TV CS50 da]
Ezaugarri erabilgarria da programa bat user input onartu.
Beraz, oraingoz, esploratu dugu zenbait funtzio CS50 liburutegi barruan
erabiltzailearen sarrera onartu, esate baterako, "katea"
Erabiltzaile eskatuz, aplikazioa exekutatzen ari den bitartean, kate bat.
>> Hala eta guztiz ere, ez dira kasu non eman nahi duzu zure programa sarrera
da benetan aurretik exekutatzen ari da.
Horrela, behar ez baduzu, zure erabiltzaile-informazio gehigarria eskatu
exekutatzean erraza.
Hartu, adibidez, UNIX komando mv edo mugitu.
Komando honek fitxategi bat kokapen batetik bestera mugitzeko aukera ematen dio erabiltzaileari.
Eskuzko orrien arabera, mv bi komando-lerroko argumentu onartzen ditu:
fitxategia mugitu ari den eta kokapena fitxategi ari da mugitu.
Beraz, adibide honetan bi argumentuak komando bat dauka.
Beraz, nola ez, gure C programa esango dugu, komando-lerroko argumentu horiek erabili ahal izateko?
>> Beno, bihurtzen da nagusia, C programa guztietan erabiltzen dugu, sekretu bat du.
Main bi parametro onartzen ditu: argc eta argv.
Dezagun baldintza hauetan.
>> Lehenengo parametroa, argc, argumentu Aldaketa dago,
guztia datu mota bat du.
Argc parametroak argumentu kopurua, komando hau barne.
Gure mugimendua komandoa, besterik ez dugu, nahiz eta bi argumentu hartzen ditu "bistaratuko,
argc balioa 3 izango da.
Bigarren parametroa, argv, bektorearen argumentuan dago,
kateak seinalatu erakusleak char array bat da.
>> Horrek esan nahi du argv elementu bakoitzean, zero hasita,
komandoa eta argumentuak ez dauka.
Esate baterako, argv [0], argv zero jo dut erreferentzia,
beti izango du ari den komandoa exekutatu
Kasu honetan, mv.
argv [1] Lehen argumentua, file.txt edukiko du,
eta argv [2] bigarren argumentua edukiko du, ~ / cs50 /.
Argv azken argumentua null izango da beti.
Beraz, dezagun komando-lerroko argumentu horiek ezartzeko.
Ariketak aurreko, void jarri dugu, ez da ezer zentzua, nagusia bere parametro gisa.
Dena den, komando-lerroko argumentuak erabili,
void eta leku nagusia int argc, char * argv [] barrutik kendu behar dugu.
Orain, argv elementu osoa, zure argumentuak diren sartzeko,
nahikoa duzu batetik bestera joateko, edo begizta hau atsegin array bidez.
Beraz, nagusia gorputzaren barruan, aurrera joan eta idatzi begizta ari gara:
for (int i = 0; i <argc; i + +).
>> Ez dugu behar kizkur giltza hemen ari gara soilik kode lerro bat exekutatzean
begizta honen gorputzaren barruan.
Aurrera jarraituko dugu eta fitxa hit behin,
ondoren, idatzi printf ("argv [% d], osoko balioa,
% s da, katea, ondoren lerro berria karakterea.
Orduan printf eskaintzen dugu i Begizta uneko iterazio
eta argv [i] komando-lerroko uneko argumentua katea ordezkaritza.
Noiz exekutatu dugu bi argumentu hartzen, terminalean ari bistaratuko argumentuak ikusiko dugu.
Lehenago argv Lekua: erakusleak char array bat dela esan genuen.
>> Beraz, kasu honetan, bada, nola ez sartzeko dugu argumentu bakoitzeko banakako pertsonaiak?
Esate baterako, zer nahi izanez gero, lehen argumentua karaktere jakin bat bilatzeko?
Beno, erantzun behar dugu habiaratua begizta bat aplikatzeko
gero argumentu katea elementu bakoitzean zehar batetik bestera joateko.
Hau da, nola egiten duzun.
>> Lehenik eta behin, example2.c kopia bat egin dugu.
Gero, barruan loop lehen,
loop bat gehitu dugu.
Beraz, (int j = 0, n = strlen (argv [i]),
eta gero ematen digu argumentua uneko luzera
J <n; j + +)
Pertsonaia bakoitzaren kokapena inprimatu ari gara
printf erabiliz uneko argumentua barruan.
Beraz, printf ("argv [% d], uneko argumentua indizea adierazteko,
ondoren [% d] berriro ere, uneko argumentua uneko izaera adierazteko,
hau da:% c, argumentua uneko pertsonaia.
Azkenik, kanpoko begizta indizea printf eskaintzen dugu, i,
ondoren barruko loop indizea.
>> Eta gure azken argumentua printf emandako argumentu benetako pertsonaia da
komando-lerroan.
Orain, kate funtzioa strlen erabili dut kate baten luzera lortzeko delako,
Gure barne goiko string.h liburutegia ere gehitu behar dut.
Beraz, horretarako, igo dugu, eta besterik ez stdio.h, ez goaz
# .
>> Beraz, dezagun konpilatu eta exekutatu eta benetako argumentu bat ematen.
>> Eta, ikusiko dugun bezala, gaur egun bakoitzak karakterra argumentua kokapena zehatza.
Beraz, hori da. Christopher Bartolomé naiz, hau da, CS50.
[CS50.TV]