Documente Academic
Documente Profesional
Documente Cultură
Parametri Linie Comanda
Parametri Linie Comanda
argv[0]
copiere
argv[1]
dest.dat
argv[2]
sursa.dat
argv[argc]
\0
Parametrii liniei de comanda
argv[0] conţine întotdeauna numele programului, astfel
încât pentru o comandă fără parametri argc=1, iar o
comandă cu 2 parametri va avea argc=3.
argv[1] conţine primul parametru,
argv[2] – pe cel de-al doilea,
argv[argc-1] va conţine ultimul parametru,
argv[argc] va fi un pointer la un şir vid (NULL).
Exemplul Să se copieze la ieşire fişierele date ca
parametri ai comenzii. Dacă nu avem parametri se
copiază fişierul standard de intrare (stdin).
Exemplul 1: Copierea unui fisier.
#include <stdio.h>
void copy(FILE *, FILE *);
main(int argc, char *argv[])
{ FILE *pf;
if(argc==1)
copy(stdin, stdout);
else
while(--argc)
if((pf==fopen(*++argv,”r”))==NULL)
{fprintf(stderr,“Eroare deschidere %s\n”,
*argv);
return 1;
}
else
Exemplul 1: Copierea unui fisier.
{
copy(pf, stdout);
fclose(pf);
}
return 0;
}
void copy(FILE *s, FILE *d)
{
int c;
while((c=getc(s))!=EOF)
putc(c, d);
}
Functii cu numar variabil de parametri.
Funcţiile C pot fi apelate cu număr variabil de parametri
actuali. (de exemplu funcţiile printf() şi scanf() ).
Programatorul îşi poate scrie propriile funcţii cu număr
variabil de parametri, folosind macroinstrucţiunile din
fişierul antet <stdarg.h>.
O funcţie cu număr variabil de parametri va avea prototipul:
tip nume (listă_fixă_parametri, …);
Lista fixă de parametri trebuie să fie nevidă, deci numărul
de parametri va fi mai mare sau egal cu numărul de
parametri ficşi.
Parametrii care sunt în număr variabil sunt convertiţi
implicit ca tip, şi anume:
• toţi întregii la int
• toţi realii la double
Functii cu numar variabil de parametri.
Fişierul antet <stdarg.h> conţine definiţii pentru tipul
va_list. Argumentele variabile vor fi accesate printr-o
variabilă pointer pa, declarată astfel:
va_list pa;
Iniţializarea pointerului de acces la argumentele variabile -
pa se face folosind macroinstrucţiunea va_start() ,
indicând adresa ultimului parametru fix lastarg:
va_start(pa, lastarg);
Pentru parcurgerea listei de argumente variabile se va
folosi macroinstrucţiunea va_arg(), care actualizează
pointerul de acces la argumente pa, pentru a indica
următorul argument int sau double, şi întoarce ca
rezultat argumentul curent din lista de parametri variabili:
Functii cu numar variabil de parametri.
vint=va_arg(pa, int);
sau
vreal=va_arg(pa, double);
Oprirea procesului repetitiv se face folosind informaţiile
despre parametrii ficşi (în vârful stivei se va afla pointerul
la format). După ultimul parametru variabil extras se
apelează macroinstrucţiunea:
va_end(pa);
#include <stdio.h>
#include <stdarg.h>