Skip to content
Snippets Groups Projects
Verified Commit ceb34063 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

added command line for C

parent 3f18c894
No related branches found
No related tags found
No related merge requests found
---
title: La ligne de commande
date: 2021-11-23
---
# La ligne de commande (1/4)
* Ou comment passer des arguments à un programme en C.
## 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:
1. `void main()`{.C}.
2. `int main()`{.C}.
3. `void main(int argc, char **argv)`{.C}.
4. `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.
# La ligne de commande (2/4)
## Exemple d'utilisation
Pour la fonction dans le programme `prog`
```C
int main(int argc, char **argv)
```
Pour l'exécution suivante on a
```bash
$ ./prog -b 50 file.txt
```
```C
argc == 4
argv[0] == "prog"
argv[1] == "-b"
argv[2] == "50"
argv[3] == "file.txt"
```
# La ligne de commande (3/4)
## Conversion des arguments
- Les arguments sont toujours stockés comme des **chaînes de
caractères**.
- Peu pratique si on veut manipuler des valeurs numériques.
- Fonctions pour faire des conversions:
```C
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
```
# La ligne de commande (4/4)
## Exemple d'utilisation
\footnotesize
```C
#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;
}
```
. . .
```bash
$ ./prog Paul 29
Hello Paul, you are 29 years old.
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment