Parametrii Liniei de Comanda in C si C++

Curs
10/10 (3 voturi)
Domeniu: Calculatoare
Conține 1 fișier: doc
Pagini : 8 în total
Cuvinte : 2097
Mărime: 16.93KB (arhivat)
Cost: Gratis

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)

Preview document

Parametrii Liniei de Comanda in C si C++ - Pagina 1
Parametrii Liniei de Comanda in C si C++ - Pagina 2
Parametrii Liniei de Comanda in C si C++ - Pagina 3
Parametrii Liniei de Comanda in C si C++ - Pagina 4
Parametrii Liniei de Comanda in C si C++ - Pagina 5
Parametrii Liniei de Comanda in C si C++ - Pagina 6
Parametrii Liniei de Comanda in C si C++ - Pagina 7
Parametrii Liniei de Comanda in C si C++ - Pagina 8

Conținut arhivă zip

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

Alții au mai descărcat și

Prelucrarea Imaginilor Digitale 1

Esantionarea si cuantificare sunt realizate de dispozitivele de achizitie a imaginilor. Acestea pot consta intr-un singur senzor care se misca...

Curs ASDN

1.1. Sisteme de numeratie - Sistemele numerice prelucrează informatie - Informatia este codificată ® un anumit tip de reprezentare - Sistemul...

Multiprocesoare

INTRODUCERE “Necesarul de simulări al Departamentului pentru Energie (DOE) al Statelor Unite depăşeşte cu mult capacitatea celor mai puternice...

Bazele Informaticii

Cu totii stim ca necesitatea reprezinta mama inventicii. Acest lucru este valabil si in lumea computerelor. U.S Army a fost prima care a solicitat...

Circuite Numerice Integrate - Decodificator

Dupa ce veti termina acest laborator veti fi capabili sa: • Proiectati un decodificator binar folosind porti logice • Creati un proiect pentru un...

Curs Excel

Deplasarea prin foi Deplasarea dintr-o foaie in alta se face cu clic cu mouse-ul pe eticheta foii dorite. Deplasarea prin celule Va puteti...

Procesarea semnalelor digitale în timp real

Introducere în procesarea semnalelor digitale în timp real Semnalele pot fi clasificate în trei categorii: - semnalele continue în timp...

Curs Windows

Componentele unui calculator 1. Software (soft) = componentele logice, invizibile ale unui calculator; componenta “moale”, care nu se poate...

Ai nevoie de altceva?