main în C

Funcția cu care începe orice program C: sistemul o apelează la pornire, iar valoarea returnată spune dacă programul a reușit.

Sintaxă
int main(void) { ... }
int main(int argc, char *argv[]) { ... }

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: main trebuie să returneze int.
  • Citești argv[1] fără să verifici argc. 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.
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: main

Ai o nelămurire despre utilizarea comenzii main sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.