PopulaireParcours
Apprendre la programmation en C
Un cours de C en ligne, gratuit et interactif. Tu écris du C à chaque leçon — variables, control flow, fonctions, pointeurs, gestion de la mémoire — avec des indices IA quand ça segfault, et un certificat gratuit à la fin.
117,962+ codders inscrits
- Adapté aux débutants
Aide au codage assistée par IA
Leçons interactives et pratiques
Narration audio dans chaque leçon
Quiz pour tester vos connaissances
Certificat gratuit de réussite
Programme
Section 1
Fundamentals
Commencer la sectionDémarrerDévelopperRéduireBuild a strong foundation with essential concepts and basic skillsIntroduction
4 leçons326- 01Langage CDéfi
- 02Hello World !DéfiQuiz
- 03CommentairesQuiz
- 04Structure de base d'un programmeDéfiQuiz
Variables
11 leçons1485- 01Types de donnéesDéfiQuiz
- 02EntiersDéfiQuiz
- 03Float - DoubleDéfiMaîtriseQuiz
- 04CaractèresDéfiQuiz
- 05BooléensDéfiMaîtriseQuiz
- 06ConstantesDéfiQuiz
- 07Les bases de printfDéfiQuiz
- 08Règles de nommage des variablesDéfiQuiz
- 09Type Casting Partie 1DéfiMaîtriseQuiz
- 10Type Casting Partie 2DéfiQuiz
- 11Défi récapitulatifDéfi
Opérateurs
9 leçons1161- 01Opérateurs arithmétiquesDéfiQuiz
- 02Opérateur moduloDéfiMaîtriseQuiz
- 03Incrémentation/DécrémentationDéfiQuiz
- 04Opérateurs d'affectationDéfiQuiz
- 05Opérateurs relationnelsDéfiQuiz
- 06Opérateurs logiques - Partie 1DéfiQuiz
- 07Opérateurs logiques - Partie 2DéfiQuiz
- 08Opérateurs logiques - Partie 3DéfiMaîtriseQuiz
- 09Défi récapitulatifDéfi
Structures de contrôle
7 leçons944- 01L'instruction IfDéfiQuiz
- 02If - ElseDéfiQuiz
- 03Else-IfDéfiMaîtriseQuiz
- 04Switch CaseDéfiMaîtriseQuiz
- 05Opérateur ternaireDéfiQuiz
- 06Défi récapitulatifDéfi
- 07If - Else imbriquésDéfiQuiz
Entrées & Sorties
5 leçons626- 01Spécificateurs de formatDéfiQuiz
- 02Bases de scanfDéfiMaîtriseQuiz
- 03Défi récapitulatif n°1Défi
- 04Validation des entréesDéfiQuiz
- 05Défi récapitulatif n°2Défi
Boucles
9 leçons1053- 01Boucle ForDéfiMaîtriseQuiz
- 02Boucle WhileDéfiQuiz
- 03Boucle Do WhileDéfiQuiz
- 04BreakDéfiQuiz
- 05ContinueDéfiQuiz
- 06Défi récapitulatif n°1Défi
- 07Boucles imbriquéesDéfiMaîtriseQuiz
- 08Boucles infiniesQuiz
- 09Défi récapitulatif n°2Défi
Fonctions
7 leçons1039- 01Déclarer une fonctionDéfiQuiz
- 02Types de retourDéfiMaîtriseQuiz
- 03ParamètresDéfiMaîtriseQuiz
- 04Défi récapitulatif n°1Défi
- 05Bases de la récursivitéDéfiMaîtriseQuiz
- 06Prototypes de fonctionDéfiQuiz
- 07Défi récapitulatif n°2Défi
Tableaux
8 leçons1247- 01Déclaration de tableauxDéfiQuiz
- 02Accès aux élémentsDéfiQuiz
- 03Modification d'élémentsDéfiMaîtriseQuiz
- 04Tableaux multidimensionnelsDéfiMaîtriseQuiz
- 05Défi récapitulatif n°1Défi
- 06Les tableaux comme arguments de fonctionDéfiMaîtriseQuiz
- 07Algorithmes de tableauxDéfiMaîtriseQuiz
- 08Défi récapitulatif n°2Défi
Défis finaux
3 leçons3- 01NotesDéfi
- 02PicsDéfi
- 03TVDéfi
Section 2
Logic & Flow
Commencer la sectionDémarrerDévelopperRéduireMaster advanced C programming with a focus on data structures and flow control. Learn to work with complex arrays, collections, error handling, and time management.Les bases des pointeurs
6 leçons540- 01Qu'est-ce qu'un pointeur ?Quiz
- 02Déclaration de pointeursDéfiQuiz
- 03L'opérateur d'adresse (&)DéfiQuiz
- 04L'opérateur de déréférencement (*)DéfiQuiz
- 05Pointeurs NULLDéfiQuiz
- 06Récapitulatif : Les bases des pointeursDéfi
Pointeurs et Tableaux
5 leçons531- 01Noms de tableaux comme pointeursDéfiQuiz
- 02Éléments de tableau - PointeursDéfiQuiz
- 03Arithmétique des pointeursDéfiQuiz
- 04Comparaison de pointeursDéfiQuiz
- 05Récapitulatif : Parcours de tableau par pointeurDéfi
Tableaux de caractères et chaînes
8 leçons858- 01Les chaînes comme tableaux de charDéfiQuiz
- 02Le terminateur nulDéfiQuiz
- 03Saisie de chaînes avec scanfDéfiQuiz
- 04Utilisation de strlen()DéfiQuiz
- 05Utilisation de strcpy()DéfiQuiz
- 06Utilisation de strcat()DéfiQuiz
- 07Utilisation de strcmp()DéfiQuiz
- 08Récapitulatif : Fonctions de base sur les chaînesDéfi
Projet : Utilitaire de texte simple
Projet5 leçons1- 01Présentation du projetDéfi
- 02Compter les caractèresProjet
- 03Compter les voyellesProjet
- 04Convertir en majusculesProjet
- 05Résultat finalProjet
Pointeurs et fonctions
6 leçons641- 01Passage par valeurDéfiQuiz
- 02Passage de pointeurs aux fonctionsDéfiQuiz
- 03Modifier des variables via des pointeursDéfiQuiz
- 04Un exemple classique : SwapDéfiQuiz
- 05Passage de tableaux aux fonctionsDéfiQuiz
- 06Récapitulatif : Pointeurs comme arguments de fonctionDéfi
Gestion de la mémoire
7 leçons652- 01Mémoire Pile vs TasQuiz
- 02Allocation dynamique - malloc()DéfiQuiz
- 03Utiliser sizeof() pour l'allocationDéfiQuiz
- 04Vérifier l'échec de l'allocationDéfiQuiz
- 05Libérer la mémoire avec free()DéfiQuiz
- 06Allouer avec calloc()DéfiQuiz
- 07Récapitulatif : Tableaux dynamiquesDéfi
Structures (structs)
6 leçons540- 01Qu'est-ce qu'une Struct ?Quiz
- 02Déclarer une StructDéfiQuiz
- 03Créer des variables de type StructDéfiQuiz
- 04Accéder aux membres d'une StructDéfiQuiz
- 05Initialiser des StructsDéfiQuiz
- 06Récapitulatif : Struct de données étudiantDéfi
Structures et Pointeurs
6 leçons643- 01Pointeurs vers des structuresDéfiQuiz
- 02L'opérateur flèche (->)DéfiQuiz
- 03Passage de structures par valeurDéfiQuiz
- 04Passage de pointeurs de structuresDéfiQuiz
- 05Allocation dynamique de structuresDéfiQuiz
- 06Récap : Modifier une structure - PtrDéfi
Projet : Saisie de contact simple
Projet5 leçons1- 01Projet : Définir la structure ContactDéfi
- 02Fonction pour créer un contactProjet
- 03Fonction pour remplir un contactProjet
- 04Fonction pour afficher un contactProjet
- 05Assembler le toutProjet
Énumérations et typedef
6 leçons640- 01enum pour les constantes nomméesDéfiQuiz
- 02Déclarer et utiliser des énumérationsDéfiQuiz
- 03Les énumérations dans les instructions switchDéfiQuiz
- 04Utiliser typedef pour les alias de typesDéfiQuiz
- 05typedef avec les structuresDéfiQuiz
- 06Récapitulatif : Pratique de typedef et enumDéfi
Défis de révision finale
3 leçons3- 01Récap : Concaténation dynamique de chaînesDéfi
- 02Récap : Tableau de structsDéfi
- 03Récap : Compteur de fréquence des motsDéfi
Section 3
Object Oriented Programming
Commencer la sectionDémarrerDévelopperRéduireDiscover how to organize code with classes, objects, and reusable structuresBases de la programmation modulaire
5 leçons433- 01Fichiers d'en-têteQuiz
- 02Gardes d'inclusionDéfiQuiz
- 03Fichiers sourcesDéfiQuiz
- 04Fonctions statiquesDéfiQuiz
- 05Récapitulatif : Calculatrice modulaireDéfi
Objets et méthodes
6 leçons642- 01Structs comme objetsDéfiQuiz
- 02Le pointeur 'Self'DéfiQuiz
- 03Rigueur du mot-clé constDéfiQuiz
- 04Pointeur vs ValeurDéfiQuiz
- 05Méthodes utilitairesDéfiQuiz
- 06Récapitulatif : Point ManagerDéfi
Cycle de vie des objets
5 leçons533- 01Pattern de constructeurDéfiQuiz
- 02Pattern de destructeurDéfiQuiz
- 03Initialisation sur la pileDéfiQuiz
- 04Copie profondeDéfiQuiz
- 05Récapitulatif : String WrapperDéfi
Encapsulation
5 leçons435- 01Concept des pointeurs opaquesQuiz
- 02Définir des structures opaquesDéfiQuiz
- 03Getters et settersDéfiQuiz
- 04Validation dans les settersDéfiQuiz
- 05Récapitulatif : La boîte secrèteDéfi
Projet : Compte bancaire simple
Projet6 leçons1- 01Configuration du projetDéfi
- 02Implémentation du compteProjet
- 03Logique de dépôtProjet
- 04Logique de retraitProjet
- 05Obtenir le soldeProjet
- 06Finalisation du projet : Boucle principaleProjet
Héritage par composition
5 leçons531- 01Imbrication de structDéfiQuiz
- 02La règle du premier membreDéfiQuiz
- 03Accès aux membres parentsDéfiQuiz
- 04UpcastingDéfiQuiz
- 05Récapitulatif : Hiérarchie des formesDéfi
Pointeurs sur fonctions
5 leçons534- 01Déclaration de pointeurs sur fonctionsDéfiQuiz
- 02Appel de pointeurs sur fonctionsDéfiQuiz
- 03Typedef pour les pointeurs sur fonctionsDéfiQuiz
- 04Passage de fonctions en argumentsDéfiQuiz
- 05Récapitulatif : Dispatcher de calculatriceDéfi
Polymorphisme
6 leçons641- 01Pointeurs de fonctions dans les structuresDéfiQuiz
- 02Simulation de méthodesDéfiQuiz
- 03Le concept d'interfaceDéfiQuiz
- 04Implémentation d'interfacesDéfiQuiz
- 05Itération polymorphiqueDéfiQuiz
- 06Récapitulatif : GreeterDéfi
Projet : Dessinateur de formes
Projet5 leçons1- 01Aperçu du projetDéfi
- 02Implémentation du cercleProjet
- 03Implémentation du rectangleProjet
- 04Utilisation polymorpheProjet
- 05Conteneur de formesProjet
Conteneurs génériques
5 leçons534- 01Rappel sur les pointeurs voidDéfiQuiz
- 02Wrapper génériqueDéfiQuiz
- 03Échange génériqueDéfiQuiz
- 04Comparaison génériqueDéfiQuiz
- 05Rappel : tableaux génériquesDéfi
Patrons de conception en C
4 leçons425- 01Patron SingletonDéfiQuiz
- 02Patron FabriqueDéfiQuiz
- 03Patron ItérateurDéfiQuiz
- 04Récapitulatif : Logger FactoryDéfi
Défis finaux
4 leçons48- 01Personnage de RPGDéfi
- 02Constructeur de chaînes dynamiqueDéfi
- 03Pile génériqueDéfi
- 04Système d'événementsDéfiQuiz
Pourquoi apprendre la programmation en C avec Coddy
- Écris et exécute du vrai code C dans ton navigateur. Pas de GCC à installer, pas de Makefile, pas de toolchain à configurer. Chaque exercice compile ton programme C côté serveur et t'affiche la sortie instantanément.
- Le C tel qu'on l'utilise vraiment : pointers et références, tableaux, chaînes, structs, mémoire dynamique avec
mallocetfree, I/O sur fichiers. Les bases du C dont tout programmeur système a besoin. - Les indices de l'IA t'aident à lire et corriger les erreurs du compilateur C et les segfaults, pour que le langage paraisse abordable plutôt que cryptique dès le premier jour.
- Certificat gratuit de programmation C à la fin du cours. Un vrai signal pour les postes en systèmes, embarqué, OS ou moteurs de jeu, où la maîtrise du C est attendue.
Questions fréquentes sur l’apprentissage de la programmation en C
la programmation en C est-il facile à apprendre ?
Le C a moins de fonctionnalités que la plupart des langages modernes, mais il te confronte vite aux pointeurs et à la gestion manuelle de la mémoire — d'où sa réputation de langage difficile. Le cours introduit ces notions une par une, avec des exercices pratiques après chaque concept, pour que les parties ardues ne te tombent pas dessus toutes en même temps.
Apprendre le C ou le C++ en premier ?
Pour de l'embarqué, du développement OS ou du bas niveau, commence par C — plus petit et plus proche de la machine. Pour du développement d'applications, des moteurs de jeu ou des systèmes modernes, C++ est le choix le plus courant et te fait passer en douceur par les classes avant d'avoir à gérer la mémoire à la main.
Combien de temps faut-il pour apprendre le C ?
Les bases du C — variables, conditions, boucles, fonctions — demandent deux à quatre semaines de pratique quotidienne. Te sentir à l'aise avec les pointers, les structs et la gestion dynamique de la mémoire prend en général un à trois mois de plus. La maîtrise (code système, optimisation, grandes codebases en C) s'étale sur plusieurs années.
Est-ce que je peux apprendre la programmation en C en ligne gratuitement ?
Oui. Le cours interactif de C est gratuit — leçons complètes, exercices de code, quiz et un certificat à la clé. Le compilateur C tourne côté serveur, donc tu n'as pas besoin d'installer GCC, Clang ou un IDE en local pour commencer à écrire du C.
Faut-il installer un compilateur C pour suivre ce cours ?
Non. Chaque exercice C se compile dans un environnement isolé et affiche le résultat à côté de ton code. Pas de Makefile, pas d'IDE, aucune toolchain à configurer.
Est-ce que je reçois un certificat à la fin du cours de C ?
Oui. Une fois le cours de programmation C terminé, tu reçois un certificat de fin de formation gratuit à ajouter à ton CV ou à partager sur LinkedIn — utile aux côtés de tes projets de systems programming ou de tes repos GitHub.