Parametrii liniei de comandă în C și 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)
Publicat de: Theodor Marginean
Puncte necesare: 0

Extras din curs

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 comandă în C și C++ - Pagina 1
Parametrii liniei de comandă în C și C++ - Pagina 2
Parametrii liniei de comandă în C și C++ - Pagina 3
Parametrii liniei de comandă în C și C++ - Pagina 4
Parametrii liniei de comandă în C și C++ - Pagina 5
Parametrii liniei de comandă în C și C++ - Pagina 6
Parametrii liniei de comandă în C și C++ - Pagina 7
Parametrii liniei de comandă în C și C++ - Pagina 8

Conținut arhivă zip

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

Alții au mai descărcat și

AutoCad

APERTURE - controleazã mãrimea cursorului selector, caracteristic modului object snap. ARC - traseazã un arc de cerc de orice dimensiune. A -...

Biblioteca de Șabloane Standard

Biblioteca de Sabloane Standard (STL) asigura o abstractizare standardizata a datelor prin intermediul containerelor si o abstractizare procedurala...

Clase Derivate

1. Clase derivate. Prin mostenire, atributele unei clase de baza sunt transmise unor clase derivate. Derivarea permite definirea unor clase noi,...

Clase în Java

Clase pentru miniaplicatii Miniaplicatiile constituie extensii ale unei clase deja existente java.applet.Applet. Structura clasei unui applet...

Clase

1. Programare procedurala –Programare orientata pe obiecte. Limbajul C, ca si Pascal, utilizeaza modelul programarii structurate procedurale, care...

Comunicații internet

2.1. Stilurile caracterelor {n sfirsit pagina dvs. contine ceva, chiar daca este vorba numai de un nume. Vom analiza in continuare elementele de...

Crearea unei aplicații independente în Java

Toate aplicatiile Java contin o metoda main(), spre deosebire de miniaplicatii. class FirstApp { public static void main( String argsst) {...

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...

Te-ar putea interesa și

Puterea Reactivă

INTRODUCERE În afara consumului de putere şi energie activă pentru exploatarea reţelelor electrice interesează şi consumul de putere şi energie...

Sinteza și Analiza Structurilor de Reglare pentru Sistemul Dinamic Stabilizator de Ruliu

CAPITOLUL 1 PROBLEMATICA SISTEMELOR DINAMICE 1.1. Aspecte generale privind noţiunea de sistem În general noţiunea de sistem este utilizată în...

Comunicații Optice

Enunt: Sa se proiecteze o linie de transmisie punct cu punct cu urmatorii parametrii: " Viteza de transmisie vT=10m/7Mbps, unde m=pozitia în...

Sisteme de Operare

1.)SISTEME DE OPERARE – un system de calcul se compune din una sau mai multe unitati centrale: -memorie interna RAM; o serie de canale de...

Cursuri Autocad

1. Sisteme de coordonate. SISTEMUL DE COORDONATE UNIVERSAL WCS( world coordinate system) – este un sistem de axe de coordonate rectangular, având...

Programul Pspice - generalități

Se vor prezenta progresiv toate informaţiile de care are nevoie un utilizator pentru a efectua diverse tipuri de analize ale circuitelor...

Arhitectura microcalculatoarelor tip IBM-PC. configurații, caracteristici. reguli de instalare și exploatare

. Notiuni introductive Un sistem de calcul poate contine sute sau mii de componente individuale (circuite integrate, diode, rezistoare,...

Urmărirea estimării și identificării în comanda proceselor

UTILIZAREA ESTIMĂRII ŞI IDENTIFICĂRII ÎN COMANDA PROCESELOR 4.1 COMANDA PRIN STRATEGIA ALOCĂRII POLILOR Un proces liniar staţionar este...

Ai nevoie de altceva?