Deo zbornika Uvod u programiranje kroz C
Argumenti komandne linije u jeziku C
U sistemskim okruženjima kao što su DOS i Unix, programu se mogu predati određeni parametri, tzv. argumenti komandne linije, tako da se navedu na komandnoj liniji iza imena programa, odvojeni razmacima. Na primjer, program cp
u operacijskom sustavu Unix, koji vrši kopiranje datoteka, poziva se sa dva parametra:
cp ime1 ime2
gdje je ime1
ime datoteke koju želimo kopirati, a ime2
ime datoteke na koju ime1
želimo kopirati. Programi pisani u C-u također mogu primiti argumente komandne linije. Tu funkcionalnost osigurava funkcija main()
.
Funkcija main()
prihvaća dva argumenta: argc
tipa int
i niz pokazivača na char
, obično nazvan argv
. Nova forma funkcije main()
glasi:
int main(int argc, char *argv[])
{
....
}
Mehanizam je sljedeći: operacijski sustav u varijablu argc
smješta broj argumenta komandne linije, koji su uneti pri startanju programa, uvećan za jedan. U argv
se nalaze pokazivači na argumente komandne linije, spremljeni u argv[0]
do argv[argc-1]
. Pri tome argv[0]
uvijek sadrži ime programa koji se izvršava (pokazivač na string
). Ostali parametri su smješteni redom kojim su upisani na komandnoj liniji. Ako nema argumenata komandne linije, onda je argc == 1
. Konačno, argv[argc]
mora biti nul-pokazivač.
Na primjer, program args
koji samo ispisuje argumente komandne linije izgledao bi ovako:
#include <stdio.h>
int main(int argc, char *argv[])
{
int i;
for(i=0;i<argc; i++)
printf("%s%s", argv[i],(i<argc-1) ? "," : ".");
printf("\n");
return 0;
}
Pozovemo li program args
narebom:
args ovo su neki parametri
on će ispisati
args,ovo,su,neki,parametri.
Operacijski sustav Unix
, odnosno shell koji se koristi, ekspandirat će specijalne znakove ?, * i [] prije nego što ih preda pozivnom programu. Više detalja može se naći priručniku za dani shell (sh, ksh, csh ili bash).
Izvor: M. Jurak, Programski jezik C, predavanja 2003/04.