Tutoriel C — Du débutant à l'expert¶
Bienvenue dans ce tutoriel complet sur le langage de programmation C. Ce cours couvre tout l'écosystème C, des bases fondamentales jusqu'aux techniques avancées utilisées en programmation système.
Structure du projet¶
c-tutorial/
├── docs/
│ ├── cours/ # Leçons théoriques avec exemples exécutables
│ ├── exercices/ # Exercices pratiques par chapitre
│ ├── solutions/ # Corrections annotées
│ └── annexes/ # Références et ressources complémentaires
├── ch01_introduction/ # Code source C des chapitres
│ ...
└── CMakeLists.txt # Build des exemples avec CMake
Sommaire¶
Niveau 1 — Fondamentaux¶
| # | Chapitre | Thèmes abordés |
|---|---|---|
| 1 | Introduction au langage C | Structure d'un programme, #include, main(), printf, codes de retour |
| 2 | Variables & types de données | int, float, char, sizeof, modificateurs, spécificateurs de format |
| 3 | Les constantes | #define, const, portée, types — constantes de préprocesseur vs variables |
| 4 | Les opérateurs | Arithmétiques, logiques, bit à bit, incrémentation, affectation composée |
| 5 | Entrées & sorties | printf, scanf, fgets, séquences d'échappement, gestion du buffer |
| 6 | Structures conditionnelles | if/else, switch, opérateur ternaire, conditions imbriquées, break |
| 7 | Les boucles | for, while, do-while, break/continue, boucles imbriquées — Projet : calculatrice CLI |
Niveau 2 — Intermédiaire¶
| # | Chapitre | Thèmes abordés |
|---|---|---|
| 8 | Fonctions & récursivité | Prototypes, passage par valeur/pointeur, récursivité, portée des variables |
| 9 | Les tableaux | Tableaux 1D/2D, indices, parcours, passage en fonction, initialisation |
| 10 | Chaînes de caractères | \0, <string.h> (strlen, strcpy, strcat, strcmp), sprintf, fgets |
| 11 | Les pointeurs | &, *, passage par pointeur, arithmétique de pointeurs, NULL |
| 12 | Les structures | struct, typedef, ., ->, tableaux de structures, imbrication |
| 13 | Gestion des fichiers | FILE *, fopen/fclose, fichiers texte et binaires, perror — Projet : carnet d'adresses |
Niveau 3 — Avancé¶
| # | Chapitre | Thèmes abordés |
|---|---|---|
| 14 | Allocation dynamique | Heap vs Stack, malloc/calloc/realloc/free, fuites mémoire |
| 15 | Listes chaînées | Noeud, chaînage, insertion, suppression, inversion, gestion mémoire |
| 16 | Préprocesseur & macros | #define, macros fonctionnelles, compilation conditionnelle, macros prédéfinies |
| 17 | Énumérations & unions | enum, union, unions taguées, optimisation mémoire |
| 18 | Pointeurs avancés | Pointeurs de fonctions, void *, const et pointeurs, qsort |
| 19 | Projets multi-fichiers | Fichiers .h/.c, compilation séparée, CMake — Projet : bibliothèque de structures de données |
Prérequis¶
- Aucune connaissance du C requise
- Notions de base en programmation recommandées (variables, boucles, fonctions)
- Un compilateur C : GCC ou Clang
- CMake 3.10+ pour compiler les exemples
Installation rapide¶
# Cloner le tutoriel
git clone https://github.com/claserre9/c-tutorial.git
cd c-tutorial
# Compiler tous les exemples avec CMake
mkdir build && cd build
cmake ..
make
# Installer MkDocs pour la documentation locale
pip install -r requirements.txt
mkdocs serve
La documentation est ensuite disponible sur http://localhost:8000.
Parcours recommandé¶
- Lire le cours du chapitre
- Compiler et exécuter les exemples (
ch01_introduction/hello_world.c, etc.) - Faire les exercices sans regarder les solutions
- Comparer avec les solutions annotées
Licence¶
MIT — Clifford