-
orestis.malaspin authoredorestis.malaspin authored
ligne_commande.md 1.86 KiB
title: La ligne de commande
date: 16 octobre 2019
Point d'entrée d'un programme
-
Le point d'entrée est la fonction
main()
{.C}. -
Elle peut être déclarée de 4 façon différentes:
-
void main()
{.C}. -
int main()
{.C}. -
void main(int argc, char **argv)
{.C}. -
int main(int argc, char **argv)
{.C}.
-
-
argc
{.C} est le nombre d'arguments passés à la ligne de commande: le premier est celui du programme lui-même. -
argv
{.C} est un tableau de chaînes de caractères passés sur la ligne de commande.
Exemple d'utilisation
Pour la fonction dans le programme prog
int main(int argc, char **argv)
Pour l'exécution suivante on a
$ ./prog -b 50 file.txt
argc == 4
argv[0] == "prog"
argv[1] == "-b"
argv[2] == "50"
argv[3] == "file.txt"
Conversion des arguments
-
Les arguments sont toujours stockés comme des chaînes de caractère.
-
Peu pratique si on veut manipuler des valeurs numériques.
-
Fonctions pour faire des conversions:
int atoi(const char *nptr); long atol(const char *nptr); long long atoll(const char *nptr); double atof(const char *nptr); int snprintf(char *str, size_t size, const char *format, ...); // str: buffer, size: taille en octets max à copier, // format: cf printf(), ret: nombre de char lus
Exemple d'utilisation
\footnotesize
#include <stdio.h>
#include <stdlib.h>
#include <libgen.h>
int main(int argc, char **argv) {
if (argc != 3) {
char *progname = basename(argv[0]);
fprintf(stderr, "usage: %s name age\n", progname);
return EXIT_FAILURE;
}
char *name = argv[1];
int age = atoi(argv[2]);
printf("Hello %s, you are %d years old.\n", name, age);
return EXIT_SUCCESS;
}
$ ./prog Paul 29
Hello Paul, you are 29 years old.