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
- 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.
argc
: Enter que indica el nombre d'arguments passats al programa, incloent el nom del programa.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:
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]
iargv[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
- No comprovar
argc
: Assegura't de comprovar queargc
té el nombre esperat d'arguments per evitar errors. - No convertir correctament els arguments: Utilitza funcions com
atoi
per convertir cadenes de caràcters a enters. - 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
- Introducció a la Programació
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsiques
Mòdul 2: Tipus de Dades i Variables
Mòdul 3: Flux de Control
Mòdul 4: Funcions
- Introducció a les Funcions
- Arguments de Funció i Valors de Retorn
- Àmbit i Durada de les Variables
- Funcions Recursives
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
- Introducció a la Gestió d'Arxius
- Lectura i Escriptura d'Arxius
- Posicionament d'Arxius
- Gestió d'Errors en Operacions d'Arxius
Mòdul 10: Temes Avançats
- Directives del Preprocessador
- Arguments de Línia de Comandes
- Llistes d'Arguments Variables
- Multifil en C
Mòdul 11: Millors Pràctiques i Optimització
- Llegibilitat del Codi i Documentació
- Tècniques de Depuració
- Optimització del Rendiment
- Consideracions de Seguretat