Ce face main
Orice program C are exact o funcție main. Când pornești programul, sistemul de operare o apelează, iar programul se termină când main se termină (sau când apelezi exit).
main returnează un int: 0 (sau EXIT_SUCCESS din stdlib.h) înseamnă succes, altă valoare înseamnă eroare. Din C99, dacă execuția ajunge la acolada de final a lui main fără return, se consideră return 0;. Totuși, mulți programatori scriu return 0; explicit.
Forma cu parametri primește argumentele din linia de comandă: argc este numărul lor, inclusiv numele programului, iar argv este un tablou de șiruri de caractere. argv[0] este numele programului, iar argv[argc] este întotdeauna pointerul nul.
Parametri
| Parametru | Descriere |
|---|---|
argc |
Numărul de argumente din linia de comandă, inclusiv numele programului (de obicei cel puțin 1). |
argv |
Tablou de șiruri (char *) cu argumentele, în ordinea în care au fost scrise. |
Ce returnează
Codul de ieșire al programului: 0 / EXIT_SUCCESS pentru succes, EXIT_FAILURE (de obicei 1) sau altă valoare pentru eroare.
Exemple
Exemplul 1: Primul program
#include <stdio.h> aduce declarația lui printf. \n trece la rândul următor. void din paranteze spune că main nu primește argumente.
#include <stdio.h>
int main(void) {
printf("Salut, lume!\n");
return 0;
}
Rezultat
Salut, lume!
Exemplul 2: Argumentele din linia de comandă
Programul a fost pornit fără argumente, deci argc este 1 și bucla nu afișează nimic. Pornit cu ./program Ana Iași, ar afișa cele două argumente.
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Argumente primite: %d\n", argc - 1);
for (int i = 1; i < argc; i++) {
printf("argumentul %d: %s\n", i, argv[i]);
}
return 0;
}
Rezultat
Argumente primite: 0
Exemplul 3: Codul de ieșire
Valoarea returnată se vede în terminal cu echo $? (Linux, macOS). Aici datele sunt corecte, deci programul returnează EXIT_SUCCESS; cu un stoc negativ ar returna EXIT_FAILURE.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int stoc = 12;
if (stoc < 0) {
printf("Stoc invalid!\n");
return EXIT_FAILURE;
}
printf("Stoc verificat: %d bucăți\n", stoc);
return EXIT_SUCCESS;
}
Rezultat
Stoc verificat: 12 bucăți
Greșeli frecvente
- Scrii
void main(). Nu este C standard pentru programele obișnuite:maintrebuie să returnezeint. - Citești
argv[1]fără să verificiargc. Dacă programul a pornit fără argumente,argv[1]este pointerul nul, iar folosirea lui oprește de obicei programul. - Returnezi un cod negativ sau mai mare de 255 și te aștepți să îl vezi întreg în terminal. Pe Linux și macOS, părintele primește doar ultimii 8 biți (de exemplu
return 256;apare ca 0).
Comenzi înrudite
Funcții și prototipuri: Cum definești și declari funcții în C: tipul rezultatului, parametrii, prototipul și transmiterea argumentelor prin valoare.printf: Afișează text formatat pe ecran: un șablon cu specificatori (%d, %s, %.2f) completați cu valorile primite după el.exit, atexit și EXIT_SUCCESS: Oprește programul din orice funcție, cu un cod de ieșire; atexit înregistrează funcții de rulat la final.#include: Copiază conținutul unui fișier antet (.h) în locul liniei, ca funcțiile și tipurile declarate acolo să poată fi folosite.Compilarea cu gcc și clang: Cum transformi codul C într-un program executabil cu gcc sau clang și ce fac opțiunile folosite cel mai des.
Întrebări & Exemple de Cod:
mainAi o nelămurire despre utilizarea comenzii
mainsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.