1. Introduction 01 - Introduction
    • Introduction générale
      • La programmation c’est quoi ?
      • Parlons langage C
        • Historique
        • Langage Compilé
      • Outils nécessaires
        • Installer un éditeur de code
        • Compiler son programme C
  2. Premiers pas 02 - Premiers pas
    • Ce bon vieux Hello world
      • Le point d’entrée main
        • Écrire des commentaires
      • Afficher des informations dans la console
    • Les types usuels
      • Le type caractère
      • Le type entier
        • L’opérateur sizeof
      • Les types flottants
      • Caster une variable en C
      • Portée des variables
        • Variable locale
        • Variable globale
      • Retour sur printf
      • Les constantes
        • Généralités
        • Initialiser une constante
          • En utilisant le mot clé const
          • Avec #define
          • Quelques conseils
        • Les constantes prédéfinies
  3. Opérateurs & Arithmétique 03 - Opérateurs & Arithmétique
    • Définition générale
    • Opérateurs arithmétiques
      • L’addition
      • La soustraction
      • La multiplication
      • La division
      • Le modulo
    • Opérateurs d’affectation
      • Opérateurs d’affectation composés
    • Les opérateurs unitaires
      • L’incrémentation ++
      • La décrémentation --
      • Opérateur logique de négation !
    • Opérateurs de comparaison
    • Opérateurs logique
      • Table de vérité des opérateurs
        • Table du ET logique &&
        • Table du OU logique ||
        • Table du NON logique !
    • Priorité et associativité des opérateurs
      • Définitions
    • L’opérateur ~
      • Le complément à
  4. Conditions et boucles 04 - Conditions et boucles
    • Structures de contrôle
      • if, else if et else
      • switch
    • Les boucles
      • for
        • Double boucle for
      • white
      • do while
  5. Retour sur les fonctions 05 - Retour sur les fonctions
    • Généralités
      • Définitions
      • Documentation d’une fonction
        • Exemple : Algorithme d’Euclide
    • Déclaration et définition d’une fonction
    • Organisation et Utilisation des fichiers .h
    • fichiers .h personnalisés
      • Projet guidé pour mieux comprendre
        • Introduction au projet
        • Quelques rappels de géométrie
    • Surcharge
      • Principe
      • Comment le contourner ?
        • Utiliser des noms différents
        • Utiliser des MACROS
  6. Les tableaux statiques 06 - Les tableaux statiques
    • Déclaration d’un tableau en C
      • Un tableau sans éléments
      • Un tableau préremplit
      • Utiliser une MACROS
    • Opérations sur les éléments
      • Accès à un élément
      • Modification d’un élément
    • Remplissage du tableau
      • Avant remplissage
      • Le remplissage
        • Remplissage manuel
        • Remplissage automatique
    • Affichage d’un tableau
      • En python
      • En langage C
        • Affichage personnalisé
    • Tableaux multidimensionnels
      • Déclaration et initialisation
        • Méthode 1
        • Méthode 2
        • Initialisation incomplète
      • Accès aux valeurs
      • Affichage des tableaux multidimensionnels
    • Gestion d’erreurs
      • Tableau d’init trop grand
      • Initialiser un élément non existant
      • Utiliser une variable de taille
      • Débordement
    • Utilisation des tableaux
      • Paramètre de fonction
      • Déterminer la taille du tableau
        • Erreur importante
    • BONUS
      • Initialiser une matrice nulle
  7. Les chaînes de caractères 07 - Chaînes de caractères
    • Déclaration
    • Initialisation
      • Initialisation explicite
      • Initialisation implicite
    • Manipulation des chaînes de caractères
      • Accès aux éléments
      • Affichage
      • Lecture
        • La fonction scanf
          • Présentation et utilisation
          • Utilisation avancée
          • Limites
            • Lecture limitée
            • Dépassement mémoire
        • La fonction gets
        • La fonction fgets
      • Fonction de manipulation
        • Copier
          • Parcourir et recopier
          • La fonction strcpy
        • Concaténer
          • La fonction strcat
          • La fonction strncat
        • Comparer
          • La fonction strcmp
          • La fonction strncmp
          • Comparaison manuelle
        • Rechercher
          • La fonction strchr
          • La fonction strstr
        • Découper
        • Sensibilité à la casse
  8. Les pointeurs 08 - Les pointeurs
    • Introduction
      • Généralités sur les pointeurs
        • Définition
        • La notion d’adresse
        • Retour sur les pointeurs
        • Déclaration et initialisation
        • Modification et accès à la variable pointée
    • Les pointeurs et les tableaux
      • Analogie entre eux
      • Accès aux éléments du tableau
      • Parcours d’un tableau
      • Calculer la taille du tableau
        • Chaîne de caractères
        • Tableau d’entiers
    • Pointeurs et chaînes de caractères
      • Quelques rappels
      • Chaîne littérale
    • Pointeurs et fonctions
      • Passage de paramètres à une fonction
        • Passage par valeur
        • Passage par adresse
      • Retourner une adresse
      • Manipulation de chaînes
  9. Allocation dynamique 09 - Allocation dynamique
    • La mémoire
      • Introduction
      • Types de mémoires
        • La mémoire vive RAM
        • La mémoire morte ROM
        • La mémoire cache
        • Mémoire secondaire (stockage de masse)
    • Allocation automatique et statique
      • Allocation automatique
      • Allocation statique
    • La pile et le tas
      • La pile stack
      • Le tas heap
    • Allocation dynamique en C
      • Réserver une zone mémoire
        • La fonction malloc
        • La fonction calloc
      • Libérer la mémoire
        • Utiliser la mémoire après libération
        • Libérer deux fois la même zone
      • Allocation d’un tableau
      • Allocation d’une matrice
      • Réallouer la mémoire
  10. Les structures avancées 10 - Structures avancées
    • Introduction aux structures
      • Déclaration d’une structure
      • Initialisation d’une structure
      • Accès aux valeurs des champs
        • Accès direct
        • Accès via pointeur
      • Modification d’un champ
    • Structures imbriquées
    • Tableaux de structures
    • Typedef et alias
      • Alias de types simples
      • Alias de structures
    • Structures et fonctions
      • Passage par valeur
      • Passage par adresse
      • Retourner une structure
  11. Les fichiers 11 - Les fichiers
    • Introduction
      • Qu’est-ce qu’un fichier en informatique ?
      • Pourquoi utiliser des fichiers
      • Types d’accès aux fichiers
      • Les fichiers et le système d’exploitation
      • Cycle de vie d’un fichier en C
    • Les fichiers textes
      • Ouvrir un fichier
      • Écrire dans un fichier
        • La fonction fprintf
        • La fonction fputs
      • Lecture dans un fichier
        • La fonction fscanf
        • La fonction fgets
        • La fonction fgetc
      • Fermeture d’un fichier
    • Les fichiers binaires
      • Mode d’ouverture
      • Lecture
      • Écriture
  12. Tests unitaires 12 - Tests unitaires
    • Introduction
      • Qu-est-ce qu’un test unitaire ?
      • En C, ça dit quoi ?
    • Structure d’un test unitaire
      • Étude de cas
  13. Compilation séparée et makefile 13 - Compilation séparée et Makefile
    • Quelques rappels
    • Compilation séparée et rôle des fichiers .h
      • Projet guidé pour mieux comprendre
        • Introduction au projet
        • Quelques rappels de géométrie
    • Makefile
      • Rôle d’un makefile
      • Structurer son propre makefile
        • Explications du makefile
        • Règle principale
        • Règle générique
  14. Structures avancées 14 - Structures particulières
    • Enum
      • Définition et généralités
      • Utilisation d’une enum
        • Avantages
      • Utilisation avec typedef
    • Union
      • Définition et généralités
      • Utilisation
      • Taille d’une union
    • Champs de bits
      • Définition
      • Utilisation