Parametrii Liniei de Comanda in C si C++

Imagine preview
(10/10 din 3 voturi)

Acest curs prezinta Parametrii Liniei de Comanda in C si C++.
Mai jos poate fi vizualizat un extras din document (aprox. 2 pagini).

Arhiva contine 1 fisier doc de 8 pagini .

Iti recomandam sa te uiti bine pe extras si pe imaginile oferite iar daca este ceea ce-ti trebuie pentru documentarea ta, il poti descarca.

Fratele cel mare te iubeste, acest download este gratuit. Yupyy!

Domenii: Calculatoare, Automatica, Inteligenta Artificiala, Limbaje de Programare

Extras din document

1. Macroinstructiuni pentru functii cu numar variabil de parametri.

Functiile C pot fi apelate cu numar variabil de parametri actuali. (un exemplu îl constituie functiile printf() si scanf() ).

Programatorul îsi poate scrie propriile functii cu numar variabil de parametri, folosind macroinstructiunile din fisierul antet <stdarg.h>.

O functie cu numar variabil de parametri va avea prototipul:

tip nume (lista_fixa_parametri, …);

Lista fixa de parametri trebuie sa fie nevida, deci numarul de parametri va fi mai mare sau egal cu numarul de parametri ficsi.

Parametrii care sunt în numar variabil sunt convertiti implicit ca tip, si anume:

• toti întregii la int

• toti realii la double

Fisierul antet <stdarg.h> contine definitii pentru tipul va_list. Argumentele variabile vor fi accesate printr-o variabila pointer pa, declarata astfel:

va_list pa;

Initializarea pointerului de acces la argumentele variabile -pa se face folosind macroinstructiunea va_start() , indicând adresa ultimului parametru fix lastarg:

va_start(pa, lastarg);

Pentru parcurgerea listei de argumente variabile se va folosi macroinstructiunea va_arg(), care actualizeaza pointerul de acces la argumente pa, pentru a indica urmatorul argument int sau double, si întoarce ca rezultat argumentul curent din lista de parametri variabili:

vint=va_arg(pa, int);

sau

vreal=va_arg(pa, double);

Oprirea procesului repetitiv se face folosind informatiile despre parametrii ficsi (în vârful stivei se va afla pointerul la format). Dupa ultimul parametru variabil extras se apeleaza macroinstructiunea:

va_end(pa);

Exemplul: Scrieti o functie care afiseaza un numar variabil de siruri de caractere (cel mult max).

#include <stdio.h>

#include <stdarg.h>

int printvar(int max, …);

void main(void)

{ printvar(3,”Ion”,”Vasile”,”Mihai”);

printf(“n”);

printvar(5,”marti”,”joi”,”luni”,”vineri”,”duminica”);

printf(“n”);

}

void printvar(int max,…)

{ va_list pa;

int narg=0;

char *siruri[10];

va_start(pa,max);

while(narg < max) {

siruri[narg]=va_arg(pa, char*);

printf(“%s n”, siruri[narg++]);

}

va_end(pa);

}

Extragerea argumentelor variabile, poate fi facuta, si cu alte functii, în loc de va_arg(). În acest scop se folosesc functiile: vprintf(), vfprintf() si vsprintf(). Acestea au prototipurile:

int vprintf(char * format, va_list pa);

• afiseaza, sub controlul formatului, la iesirea standard, un numar variabil de argumente, accesate prin pointerul pa

• întoarce numarul de octeti afisati (rezultat negativ la eroare)

Exemplu:

#include <stdio.h>

#include <stdarg.h>

int printvar(char* fmt, …);

void main(void)

{ fmt1[]=”%s %s %sn”;

printvar(fmt1,”Ion”,”Vasile”,”Mihai”);

}

void printvar(char* fmt,…)

{ va_list pa;

va_start(pa,fmt);

vprintf(fmt,pa);

va_end(pa);

}

int vfprintf(FILE * fis, char * format, va_list pa);

• afiseaza, sub controlul formatului, în fisierul fis, un numar variabil de argumente, accesate prin pointerul pa

• întoarce numarul de octeti afisati (rezultat negativ la eroare)

Fisiere in arhiva (1):

  • Parametrii liniei de comanda in C si C++.doc