Argumenti funkcije main c visual studio. Argumenti funkcije Main().

Opcijski i imenovani argumenti

Opcioni argumenti

C# 4.0 uvodi novu funkciju koja poboljšava pogodnost specificiranja argumenata prilikom pozivanja metode. Ovaj alat se zove neobavezni argumenti i omogućava vam da definirate zadanu vrijednost za parametar metode. Ova vrijednost će se koristiti po defaultu ako nije naveden odgovarajući argument za parametar kada se metoda pozove. Stoga nije potrebno specificirati argument za takav parametar. Opcioni argumenti olakšavaju pozivanje metoda, gdje se zadani argumenti primjenjuju na neke parametre. Mogu se koristiti i kao "kratki" oblik preopterećenja metoda.

Glavni podsticaj za dodavanje opcionih argumenata bila je potreba da se pojednostavi interakcija sa COM objektima. U nekoliko Microsoft objektnih modela (npr. Microsoft office) funkcionalnost je obezbeđena preko COM objekata, od kojih su mnogi napisani davno i dizajnirani da koriste opcione parametre.

Primjer korištenja neobaveznih argumenata prikazan je u nastavku:

Korišćenje sistema; koristeći System.Collections.Generic; koristeći System.Linq; koristeći System.Text; imenski prostor ConsoleApplication1 ( klasa Program ( // Argumenti b i c su opcioni kada se poziva static int mySum(int a, int b = 5, int c = 10) ( return a + b + c; ) static void Main() ( int sum1 = mySum(3); int sum2 = mySum(3,12); Console.WriteLine("Sum1 = "+sum1); Console.WriteLine("Sum2 = "+sum2); Console.ReadLine(); ) ) )

Treba imati na umu da svi neobavezni argumenti moraju nužno biti naznačeni desno od traženih. Pored metoda, opcioni argumenti se mogu koristiti u konstruktorima, indekserima i delegatima.

Jedna od prednosti opcionih argumenata je ta što olakšavaju programeru da se nosi sa složenim pozivima metoda i konstruktora. Na kraju krajeva, često je potrebno postaviti više parametara u metodu nego što je obično potrebno. I u ovakvim slučajevima, neki od ovih parametara se mogu učiniti opcionim pažljivom upotrebom opcionih argumenata. To znači da trebate proslijediti samo argumente koji su bitni u datoj konkretan slučaj, ne svi argumenti, koji bi inače trebali biti potrebni. Ovaj pristup nam omogućava da racionaliziramo metodu i pojednostavimo programerovo rukovanje njome.

Imenovani argumenti

Još jedan funkcionalnost, koji je dodat u C# sa izdanjem .NET 4.0, je podrška za tzv. imenovani argumenti. Kao što znate, prilikom prosljeđivanja argumenata metodi, redoslijed kojim se pojavljuju, po pravilu, mora odgovarati redoslijedu kojim su parametri definirani u samoj metodi. Drugim riječima, vrijednost argumenta je dodijeljena parametru prema njegovoj poziciji na listi argumenata.

Imenovani argumenti su dizajnirani da prevaziđu ovo ograničenje. Imenovani argument vam omogućava da navedete ime parametra kojem je njegova vrijednost dodijeljena. I u ovom slučaju, redoslijed argumenata više nije bitan. Dakle, imenovani argumenti su donekle slični prethodno spomenutim inicijalizatorima objekata, iako se od njih razlikuju po svojoj sintaksi. Da navedete argument po imenu, koristite sljedeći oblik sintakse:

parameter_name: vrijednost

Evo parameter_name označava ime parametra kojem se prosljeđuje vrijednost. Naravno, parameter_name mora biti ime važećeg parametra za metodu koja se poziva.

Dešava se da se podaci prenose u program iz komandne linije kada se on pozove. Takvi podaci se nazivaju argumenti komandne linije. To izgleda ovako, na primjer:

./a.out test.txt ls -lt /home/peter/

Ovo poziva programe a.out (iz trenutnog direktorija) i ls (iz istog direktorija navedenog u varijabli okruženja PATH). Prvi program iz komandne linije prima jednu riječ - test.txt, drugi - dvije: -lt i /home/peter/.

Ako je program napisan u C, onda kada se pokrene, kontrola se odmah prenosi na funkciju main(), dakle, ona je ta koja prima argumente komandne linije koji su dodijeljeni njenim varijabilnim parametrima.

Do sada smo definirali main() funkciju kao da ne uzima nikakve parametre i ne vraća ništa. Zapravo, u C-u, svaka funkcija po defaultu (ako ništa drugo nije definirano) vraća cijeli broj. Ovo se može provjeriti. Ako napišete kod ovako:

main() ( printf("Zdravo \n") ; return 0 ; )

Tada se neće pojaviti upozorenje ili greška tokom kompilacije. Isto će se dogoditi ako napišemo int main() . Ovo dokazuje da zadana funkcija vraća cijeli broj, a ne ništa (void). Iako ono što funkcija vraća uvijek može biti "preodređeno", na primjer, voidmain() ili float main() .

Kada se program pozove iz komandne linije, uvijek mu se prosljeđuje par podataka:

  1. cijeli broj, označavajući broj riječi (elemenata odvojenih razmacima) na komandnoj liniji kada se pozove,
  2. pokazivač na niz stringova, gdje je svaki red jedna riječ iz komandne linije.

Imajte na umu da se sam naziv programa također uzima u obzir. Na primjer, ako poziv izgleda ovako:

./a.out 12 tema 2

Tada je prvi argument programa 4, a niz stringova je definisan kao (./a.out", "12", "theme", "2").

Obratite pažnju na terminologiju, postoje samo dva programska argumenta (broj i niz), ali onoliko argumenata komandne linije koliko želite. Argumenti komandne linije se "prevode" u argumente programa (u argumente funkcije main()).
Ovi podaci (broj i pokazivač) se prosljeđuju programu čak i kada se jednostavno poziva po imenu bez prosljeđivanja bilo čega: ./a.out. U ovom slučaju, prvi argument je 1, a drugi argument ukazuje na niz od samo jednog stringa (""./a.out").

Činjenica da se podaci prosljeđuju programu ne znači da bi ih funkcija main() trebala primiti. Ako je funkcija main() definirana bez parametara, tada se ne može pristupiti argumentima komandne linije. Iako vas ništa ne sprečava da ih pošaljete. Neće doći do greške.

Da biste dobili pristup podacima proslijeđenim programu, oni moraju biti dodijeljeni varijablama. Pošto se argumenti odmah prosljeđuju main() , njegovo zaglavlje bi trebalo izgledati ovako:
glavni (int n, char *arr)

Prva varijabla (n) sadrži broj riječi, a druga varijabla sadrži pokazivač na niz nizova. Često se drugi parametar piše kao **arr. Međutim, to je isto. Podsjetimo da sam niz stringova sadrži pokazivače na nizove kao svoje elemente. A u funkciji prosljeđujemo pokazivač na prvi element niza. Ispada da prosljeđujemo pokazivač na pokazivač, tj. **arr.

Vježbajte
Napišite program ovako:

#include int main(int argc, char ** argv) ( int i; printf ("%d \n", argc) ; za (i= 0; i< argc; i++ ) puts (argv[ i] ) ; }

Štampa broj riječi u komandnoj liniji kada se pozove, i svaku riječ sa nova linija. Pozovite ga bez argumenata komandne linije i sa argumentima.

U programu smo koristili promenljive parametre argc i argv. Uobičajeno je koristiti upravo takva imena, ali u stvari mogu biti svašta. Bolje je da se pridržavate ovog standarda kako bi vaši programi bili razumljiviji ne samo vama, već i drugim programerima.

Praktična važnost prosljeđivanja podataka programu

Ako imate iskustva sa GNU/Linux komandnom linijom, znate da većina naredbi ima prekidače i argumente. Na primjer, prilikom pregleda sadržaja direktorija, kopiranja, premještanja, objekti se navode kao argumenti sistem podataka na kojoj se naredba izvršava. Karakteristike njegove implementacije određuju se pomoću ključeva. Na primjer, u naredbi

Cp -r ../les_1 ../les_101

cp je ime naredbe, -r je prekidač, a ../les_1 i ../les_101 su argumenti naredbe.

Općenito, najčešće se prilikom pokretanja programa prenose adrese datoteka i "modifikatori" (ovo su ključevi) procesa izvršavanja programa.

Napišimo program koji otvara fajlove koje je korisnik odredio u komandnoj liniji za upisivanje ili dodavanje i tamo upisuje (dodaje) iste informacije koje korisnik unese sa tastature tokom izvršavanja programa:

#include #include main (int argc, char ** argv) ( int i, ch; FILE * f[ 5 ] ; if (argc< 3 || argc >7 ) ( stavlja ( "Nevažeći broj parametara") ; return 1 ; ) if (strcmp (argv[ 1 ] , "-w" ) != 0 && strcmp (argv[ 1 ] , "-a" ) != 0 ) ( stavlja ( "Prvi parametar može biti -w ili -a") ; return 2 ; ) za (i= 0 ; i< argc- 2 ; i++ ) { f[ i] = fopen (argv[ i+ 2 ] , argv[ 1 ] + 1 ) ; if (f[ i] == NULL) { printf ("Datoteka %s se ne može otvoriti\n ", argv[ i+ 2 ] ) ; return 3 ; ) ) dok ((ch = getchar () ) != EOF) za (i= 0 ; i< argc- 2 ; i++ ) putc (ch, f[ i] ) ; for (i= 0 ; i < argc- 2 ; i++ ) fclose (f[ i] ) ; return 0 ; }

Objašnjenja za kod:

  1. Kreira se niz od pet pokazivača datoteka. Stoga se ne može otvoriti više od pet datoteka istovremeno. Pokazivač datoteke prvog fajla biće pohranjen u element niza f, drugog - u f, i tako dalje.
  2. Provjerava se broj argumenata komandne linije. Mora ih biti najmanje tri, jer. prvi je naziv programa, drugi je način otvaranja datoteke, treći je prvi ili jedini fajl u koji se piše. Pošto vam program dozvoljava otvaranje samo pet datoteka, ukupan broj argumenata komandne linije ne može biti veći od sedam. Stoga, ako je broj argumenata manji od 3 ili veći od 7, tada se program završava, jer Naredba return uzrokuje izlazak funkcije, čak i ako nakon nje ima još koda. Povratnu vrijednost funkcije koja nije jednaka 0 roditeljski proces može protumačiti kao poruku da je program završio greškom.
  3. Provjerava se ispravnost drugog argumenta komandne linije. Ako nije ni "-w" ni "-a", tada uslovni izraz u drugom if vraća 1 (tačno). Funkcija strcmp() vam omogućava da uporedite nizove i vraća 0 ako su jednaki.
  4. IN za petlju datoteke se otvaraju na navedenim adresama koje počinju trećim elementom argv niza. Zato se 2 dodaje na i da bi se dobili elementi argv niza, počevši od trećeg. Izraz argc-2 označava broj proslijeđenih imena datoteka; jer argc pohranjuje ukupan broj argumenata komandne linije, od kojih prva dva nisu imena datoteka.
  5. Izraz argv+1 vam omogućava da "izrežete" podniz "w" (ili "a") iz niza "-w" (ili "-a"), jer argv je u suštini pokazivač na prvi element niza. Dodavanjem jednog u pokazivač, pomjeramo ga na sljedeći element u nizu.
  6. Ako se datoteka ne može otvoriti, funkcija fopen() vraća NULL. U tom slučaju, program se završava.
  7. Svaki znak koji korisnik unese sa tastature upisuje se u sve otvorene datoteke.
  8. Na kraju se fajlovi zatvaraju.

Prilikom automatskog kreiranja konzolne aplikacije u programskom jeziku C++, automatski se kreira glavna funkcija koja je vrlo slična ovoj:

int main(int argc, char * argv)
{…}

Zaglavlje funkcije sadrži potpis glavna funkcija main() sa argumentima argc i argv.
Ako se program izvodi kroz komandnu liniju, tada je moguće prenijeti bilo koju informaciju u ovaj program. Za ovo postoje argumenti komandne linije argc i argv.
Parametar argc je tipa int i sadrži broj parametara proslijeđenih glavnoj funkciji. Štaviše, argc je uvijek najmanje 1, čak i kada se nikakva informacija ne prosljeđuje glavnoj funkciji, budući da se ime aplikacije smatra prvim parametrom.
Parametar argv je niz pokazivača na stringove. Samo podaci tipa string mogu se proslijediti kroz komandnu liniju.

Prilikom pokretanja programa preko komande Windows linija možete joj poslati neke informacije. U ovom slučaju, komandna linija će izgledati ovako:
Disk:\path\name.exe argument1 argument2 ...

Argumenti komandne linije su razdvojeni jednim ili više razmaka.

Argument argv sadrži potpuno kvalificirano ime aplikacije:

#include
korištenje imenskog prostora std;

cout<< argv << endl;

return 0;
}

Rezultat izvršenja

Primjer: izračunavanje proizvoda dva cijela broja
Program koristi funkciju konverzije niza u cijeli broj StrToInt() odavde.

#include
korištenje imenskog prostora std;
int StrToInt(char*s) (…)
int main(int argc, char * argv) (

Int a = 0, b=0;

Ako (argc > 1)

a = StrToInt(argv);

Ako (argc > 2)

b = StrToInt(argv);

cout<< a <<«*» << b << «= « << a*b << endl;

return 0;
}

Program se pokreće kao

Rezultat izvršenja

Otklanjanje grešaka u programu sa argumentima komandne linije

Da biste prosledili argumente komandne linije prilikom otklanjanja grešaka u programu, morate da pristupite meniju Svojstva projekat.


Na kartici Svojstva konfiguracije ->Debug izabrati Komandni argumenti i postaviti njihove vrijednosti.

Kada pokrenete program u načinu za otklanjanje grešaka, program će unesene argumente tretirati kao argumente komandne linije.


Ponekad je prilikom pokretanja programa korisno prenijeti mu neke informacije. Obično se ove informacije prosljeđuju funkciji main() putem argumenata komandne linije. Argument komandne linije je informacija koja se unosi u komandnu liniju operativnog sistema iza naziva programa. Na primjer, da biste započeli sa kompajliranjem programa, trebate upisati sljedeće u komandnu liniju nakon prompt-a:

CC program_name

program_name je argument komandne linije koji specificira ime programa koji ćete kompajlirati.

Za prihvatanje argumenata komandne linije koriste se dva posebna ugrađena argumenta: argc i argv. Parametar argc sadrži broj argumenata na komandnoj liniji i cijeli je broj, a uvijek je najmanje 1 jer je prvi argument ime programa. A argv parametar je pokazivač na niz pokazivača na stringove. U ovom nizu, svaki element ukazuje na neki argument komandne linije. Svi argumenti komandne linije su stringovi, tako da konvertovanje bilo kojeg broja u željeni binarni format mora biti obezbeđeno u programu kada se razvije.

Evo jednostavnog primjera korištenja argumenta komandne linije. Na ekranu se prikazuje riječ Zdravo i vaše ime, koje se mora navesti kao argument komandne linije.

#include #include int main(int argc, char *argv) ( if(argc!=2) ( printf("Zaboravili ste da unesete svoje ime.\n"); exit(1); ) printf("Zdravo %s", argv) ; vrati 0; )

Ako ste ovom programu dali ime (ime) i vaše ime je Tom, tada da biste pokrenuli program, unesite ime Tom u komandnu liniju. Kao rezultat pokretanja programa, na ekranu će se pojaviti poruka Zdravo, Tom.

U mnogim okruženjima, svi argumenti komandne linije moraju biti odvojeni jedan od drugog razmakom ili tabulatorom. Zarezi, tačke i zarezi i slični znakovi se ne smatraju razdjelnicima. Na primjer,

Trči Spot, trči

sastoji se od tri niza znakova, dok

Erik, Rik, Fred

je niz od jednog karaktera - zarezi se općenito ne smatraju graničnicima.

Ako string sadrži razmake, tada se u nekim okruženjima string može staviti u dvostruke navodnike kako bi se spriječilo stvaranje više argumenata. Kao rezultat, cijeli niz će se smatrati jednim argumentom. Da biste saznali više o tome kako su opcije komandne linije postavljene na vašem operativnom sistemu, pogledajte dokumentaciju za taj sistem.

Veoma je važno ispravno deklarisati argv. Evo kako to najčešće rade:

Char *argv;

Prazne uglaste zagrade označavaju da niz ima neograničenu dužinu. Sada možete pristupiti pojedinačnim argumentima indeksiranjem argv niza. Na primjer, argv ukazuje na prvi niz znakova, koji je uvijek ime programa; argv ukazuje na prvi argument, i tako dalje.

Još jedan mali primjer korištenja argumenata komandne linije je program za odbrojavanje ispod. Ovaj program odbrojava od neke vrijednosti (navedene u komandnoj liniji) i pišta kada dostigne 0. Imajte na umu da se prvi argument koji sadrži početnu vrijednost pretvara u cjelobrojnu vrijednost pomoću standardne funkcije atoi () . Ako je drugi argument komandne linije (i ako uzmemo ime programa kao treći argument) niz "display" (izlaz na ekran), tada će se prikazati rezultat odbrojavanja (obrnutim redoslijedom) na ekranu.

/* Program za brojanje unatrag. */ #include #include #include #include int main(int argc, char *argv) ( int disp, count; if(argc<2) { printf("В командной строке необходимо ввести число, с которого\n"); printf("начинается отсчет. Попробуйте снова.\n"); exit(1); } if(argc==3 && !strcmp(argv, "display")) disp = 1; else disp = 0; for(count=atoi(argv); count; --count) if(disp) printf("%d\n", count); putchar("\a"); /* здесь подается звуковой сигнал */ printf("Счет закончен"); return 0; }

Imajte na umu da ako argumenti komandne linije nisu navedeni, biće prikazana poruka o grešci. Programi sa argumentima komandne linije često rade sledeće: kada korisnik pokrene ove programe bez unošenja potrebnih informacija, prikazuju se uputstva o tome kako ispravno navesti argumente.

Da biste pristupili jednom znaku u jednom od argumenata komandne linije, unesite drugi indeks u argv. Na primjer, sljedeći program ispisuje znak po znak sve argumente s kojima je pozvan:

#include int main(int argc, char *argv) ( int t, i; for(t=0; t

Zapamtite, prvi indeks argv omogućava pristup stringu, a drugi indeks omogućava pristup njegovim pojedinačnim znakovima.

Obično se argc i argv koriste za prosljeđivanje početnih naredbi programu koje će mu trebati kada se pokrene. Na primjer, argumenti komandne linije često specificiraju informacije kao što su naziv datoteke, opcija ili alternativno ponašanje. Korištenje argumenata komandne linije daje vašem programu "profesionalan izgled" i čini ga lakšim za korištenje u batch datotekama.

Nazivi argc i argv su tradicionalni, ali nisu obavezni. Ova dva parametra u funkciji main() možete imenovati kako god želite. Također, neki prevodioci mogu podržavati -dodatne argumente za main(), tako da svakako provjerite dokumentaciju za vaš kompajler.

Kada program ne zahtijeva parametre komandne linije, najčešće je eksplicitno deklarirati funkciju main() da nema parametara. U ovom slučaju, ključna riječ void se koristi u listi parametara ove funkcije.

Borland C++ podržava tri glavna() argumenta. Prva dva su tradicionalni argc i argv. Ovo su jedini argumenti funkcije main() definisane standardom ANSI C. Oni dozvoljavaju da se argumenti komandne linije prosleđuju programu. Argumenti komandne linije su informacije koje prate ime programa na komandnoj liniji operativnog sistema. Na primjer, kada se program kompajlira pomoću Borland inline kompajlera, obično se kuca bcc program_name

Gdje program_name je program koji treba kompajlirati. Ime programa se prenosi kompajleru kao argument.

Parametar argc sadrži broj argumenata komandne linije i cijeli je broj. Uvijek je najmanje 1 jer je ime programa kvalificirano kao prvi argument. Parametar argv je pokazivač na niz pokazivača znakova. Svaki element ovog niza ukazuje na argument komandne linije. Svi argumenti komandne linije su stringovi. Program konvertuje sve brojeve u interni format. Sljedeći program ispisuje "Hello" nakon čega slijedi korisničko ime ako je upisano odmah iza naziva programa:

#include

{
if(argc!=2)
{
printf("Zaboravili ste upisati svoje ime\n");
povratak 1;
}
printf("Zdravo %s", argv);
return 0;
}

Ako pozovete ime ovog programa, a korisničko ime je Sergey, tada za pokretanje programa trebate upisati:
ime Sergei.
Kao rezultat programa će se pojaviti:
Zdravo Sergej.

Argumenti komandne linije moraju biti odvojeni razmacima ili tabulatorima. Zarezi, tačke i zarezi i slični znakovi se ne smatraju razdjelnicima. Na primjer:

Sastoji se od tri reda, dok

Herb, Rick, Fred

Ovo je jedan red - zarezi nisu graničnici.

Ako želite da prosledite niz koji sadrži razmake ili tabulatore kao jedan argument, stavite ga u dvostruke navodnike. Na primjer, ovo je jedan argument:

"ovo je test"

Važno je ispravno deklarirati argv. Najtipičnija metoda je:

Prazne zagrade označavaju da niz nema fiksnu dužinu. Možete pristupiti pojedinačnim elementima koristeći argv indeksiranje. Na primjer, argv pokazuje na prvi red, koji uvijek sadrži ime programa. argv pokazuje na sljedeći red, i tako dalje.

Ispod je mali primjer korištenja argumenata komandne linije. Odbrojava od vrijednosti navedene u komandnoj liniji i emituje signal kada se dostigne nula. Imajte na umu da prvi argument sadrži broj pretvoren u cijeli broj pomoću standardne funkcije atoi(). Ako je string "display" prisutan kao drugi argument, tada će na ekranu biti prikazan sam brojač.

/* program za brojanje */

#include
#include
#include
int main(int argc, char *argv)
{
int disp, count;
if(argc<2)
{
printf("Morate unijeti dužinu broja\n");
printf("na komandnoj liniji. Pokušajte ponovo.\n");
povratak 1;
}
if (argc==3 && !strcmp(argv,"display")) disp = 1;
inače disp = 0;
for(count=atoi(argv); count; -count)
if (disp) printf("%d", count);
printf("%c", "\a"); /* na većini računara ovo je poziv */
return 0;
}

Imajte na umu da ako nisu navedeni argumenti, pojavljuje se poruka o grešci. Ovo je najtipičnije za programe koji koriste argumente komandne linije za izdavanje instrukcija ako je učinjen pokušaj pokretanja programa bez tačnih informacija.

Da biste pristupili pojedinačnim znakovima komandne linije, dodajte drugi indeks u argv. Na primjer, sljedeći program ispisuje sve argumente s kojima je pozvan, jedan po jedan znak:

#include
int main(int argc, char *argv)
{
int t, i;
za(t=0; t {
i = 0;
dok(argv[t][i])
{
printf("%c", argv[t][i]);
}
printf(");
}
return 0;
}

Mora se imati na umu da je prvi indeks za pristup nizu, a drugi za pristup karakteru niza.

Obično se argc i argv koriste za dobivanje izvornih naredbi. Teoretski, možete imati do 32767 argumenata, ali većina operativnih sistema vam ne dozvoljava ni da se približite tome. Obično se ovi argumenti koriste za određivanje naziva datoteke ili opcija. Korištenje argumenata komandne linije daje programu profesionalni izgled i omogućava da se program koristi u batch datotekama.

Ako uključite datoteku WILDARGS.OBJ isporučenu uz Borland C++, možete koristiti zamjenske znakove u argumentima tipa *.EXE. (Borland C++ automatski obrađuje obrasce i povećava argc u skladu s tim.) Na primjer, ako povežete WILDARGS.OBJ sa sljedećim programom, on će ispisati koliko datoteka odgovara imenu datoteke navedenom u komandnoj liniji:

/* Povežite ovaj program sa WILDARGS.OBJ */

#include
int main(int argc, char *argv)
{
register int i;
printf("%d fajlova odgovara navedenom imenu\n", argc-1);
printf("Oni su: ");
za(i=1; i printf("%s", argv[i]);
return 0;
}

Ako ovaj program nazovemo WA, a zatim ga pokrenemo na sljedeći način, dobićemo broj datoteka koje imaju ekstenziju EXE i listu imena ovih datoteka:

Pored argc i argv, Borland C++ takođe obezbeđuje treći argument komandne linije -env. Env parametar omogućava programu da pristupi informacijama o okruženju operativnog sistema. Env parametar mora pratiti argc i argv i deklariran je ovako:

Kao što vidite, env je deklarisan na isti način kao argv. Baš kao argv, ovo je pokazivač na niz stringova. Svaki red je string okruženja kako ga definiše operativni sistem. Env parametar nema pandan parametru argc, koji govori koliko linija okruženja ima. Umjesto toga, posljednji red okruženja je nula. Sljedeći program ispisuje sve nizove okruženja trenutno definirane u operativnom sistemu:

/* ovaj program ispisuje sve linije okruženja */

#include
int main(int argc, char *argv, char *env)
{
int t;
for(t=0; env[t]/ t++)
printf("%s\n", env[t]);
return 0;
}

Imajte na umu da iako program ne koristi argc i argv, oni moraju biti prisutni na listi parametara. C ne zna imena parametara. Umjesto toga, njihova upotreba je određena redoslijedom kojim su parametri deklarirani. U stvari, parametar možete nazvati kako god želite. Budući da su argc, argv i env tradicionalna imena, najbolje je da ih nastavite koristiti tako da svako ko čita program može odmah prepoznati da su to argumenti funkcije main().

Za programe, tipičan zadatak je pronaći vrijednost definiranu u nizu okruženja. Na primjer, sadržaj niza PATH dozvoljava programima da koriste putanje za pretraživanje. Sljedeći program pokazuje kako pronaći nizove koji deklariraju standardne staze pretraživanja. Koristi standardnu ​​bibliotečku funkciju strstr(), koja ima sljedeći prototip:

Char *strstr(const char *str1, const char *str2);

Funkcija strstr() traži string na koji ukazuje str1 u nizu na koji ukazuje str2. Ako se takav niz pronađe, onda se vraća pokazivač na prvu poziciju. Ako nije pronađeno podudaranje, funkcija vraća NULL.

/* program traži nizove okruženja za string koji sadrži PATH */

#include
#include
int main (int argc, char *argv, char *env)
{
int t;
for(t=0; env[t]; t++)
{
if(strstr(env[t], "PATH"))
printf("%s\n", env[t]);
}
return 0;
}



Učitavanje...
Top