Els arguments de línia de comandes permeten als usuaris passar informació a un programa en el moment de la seva execució. Aquesta funcionalitat és molt útil per a la configuració de paràmetres sense necessitat de modificar el codi font del programa.

Conceptes Clau

  1. Arguments de Línia de Comandes: Són els paràmetres que es passen al programa quan s'executa des de la línia de comandes.
  2. argc: Enter que indica el nombre d'arguments passats al programa, incloent el nom del programa.
  3. argv: Array de cadenes de caràcters que conté els arguments passats al programa.

Sintaxi

Quan es defineix la funció main per acceptar arguments de línia de comandes, la seva signatura canvia a:

int main(int argc, char *argv[])
  • argc (argument count): Nombre d'arguments passats al programa.
  • argv (argument vector): Array de cadenes de caràcters que conté els arguments.

Exemples Pràctics

Exemple 1: Mostrar Arguments de Línia de Comandes

Aquest programa mostra tots els arguments de línia de comandes passats al programa.

#include <stdio.h>

int main(int argc, char *argv[]) {
    printf("Nombre d'arguments: %d\n", argc);
    for (int i = 0; i < argc; i++) {
        printf("Argument %d: %s\n", i, argv[i]);
    }
    return 0;
}

Explicació:

  • argc indica el nombre d'arguments.
  • argv és un array de cadenes de caràcters que conté els arguments.
  • El bucle for recorre tots els arguments i els mostra.

Exemple 2: Sumar Dos Nombres Passats com Arguments

Aquest programa suma dos nombres passats com arguments de línia de comandes.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    if (argc != 3) {
        printf("Ús: %s <nombre1> <nombre2>\n", argv[0]);
        return 1;
    }

    int num1 = atoi(argv[1]);
    int num2 = atoi(argv[2]);
    int sum = num1 + num2;

    printf("La suma de %d i %d és %d\n", num1, num2, sum);
    return 0;
}

Explicació:

  • argc ha de ser 3 (nom del programa + 2 nombres).
  • argv[1] i argv[2] contenen els nombres passats com arguments.
  • atoi converteix les cadenes de caràcters a enters.
  • Es calcula i es mostra la suma dels dos nombres.

Exercicis Pràctics

Exercici 1: Multiplicar Tres Nombres

Escriu un programa que multipliqui tres nombres passats com arguments de línia de comandes.

Solució:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    if (argc != 4) {
        printf("Ús: %s <nombre1> <nombre2> <nombre3>\n", argv[0]);
        return 1;
    }

    int num1 = atoi(argv[1]);
    int num2 = atoi(argv[2]);
    int num3 = atoi(argv[3]);
    int product = num1 * num2 * num3;

    printf("El producte de %d, %d i %d és %d\n", num1, num2, num3, product);
    return 0;
}

Exercici 2: Comprovar si un Argument és un Nombre Parell o Senar

Escriu un programa que comprovi si un nombre passat com argument de línia de comandes és parell o senar.

Solució:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    if (argc != 2) {
        printf("Ús: %s <nombre>\n", argv[0]);
        return 1;
    }

    int num = atoi(argv[1]);

    if (num % 2 == 0) {
        printf("%d és parell\n", num);
    } else {
        printf("%d és senar\n", num);
    }

    return 0;
}

Errors Comuns i Consells

  1. No comprovar argc: Assegura't de comprovar que argc té el nombre esperat d'arguments per evitar errors.
  2. No convertir correctament els arguments: Utilitza funcions com atoi per convertir cadenes de caràcters a enters.
  3. No gestionar errors: Proporciona missatges d'error clars quan els arguments no són correctes.

Resum

En aquesta secció, hem après com utilitzar arguments de línia de comandes en programes en C. Hem vist com accedir als arguments amb argc i argv, i hem practicat amb exemples i exercicis. Aquesta funcionalitat és essencial per crear programes flexibles i configurables.

Curs de Programació en C

Mòdul 1: Introducció al C

Mòdul 2: Tipus de Dades i Variables

Mòdul 3: Flux de Control

Mòdul 4: Funcions

Mòdul 5: Arrays i Strings

Mòdul 6: Punteres

Mòdul 7: Estructures i Unions

Mòdul 8: Assignació Dinàmica de Memòria

Mòdul 9: Gestió d'Arxius

Mòdul 10: Temes Avançats

Mòdul 11: Millors Pràctiques i Optimització

Mòdul 12: Projecte i Avaluació Final

© Copyright 2024. Tots els drets reservats