IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Notes sur le langage C

Date de publication : 29 avril 2009

Par Emmanuel Delahaye (Espace personnel d'Emmanuel Delahaye)
  () (Blog)
 

Ce document est un peu disparate. En effet, il contient une multitude d'articles plus ou moins longs qui sont souvent des réponses que j'ai pu apporter à des questions souvent posées sur les forums.
Je me suis efforcé ensuite de les organiser en chapitres de la façon suivante :
  • Généralités
  • Eléments du langage
  • Fonctions
  • Types et Variables
  • Pointeurs, tableaux, chaînes
  • Entrées / sorties
  • Bibliothèque standard
  • Codage
  • Divers
Généralités
I. C'est quoi l'algorithmique ?
II. Déclarations ? Définitions ?
II-A. Déclaration
II-B. Définition
III. Langage C ? Fonctions systèmes ? Je suis perdu !
III-A. Domaine couvert par le langage C
III-B. Fonctions système
III-C. Bibliothèques tierces publiques
III-D. Bibliothèques tierces privées
IV. C, UNIX, POSIX ?
V. Production du code exécutable
VI. pile, tas ? C'est quoi ?
VII. Le mode plein écran
VII-A. Installation de ansi.sys sous Windows XP
Eléments du langage
VIII. Se procurer la norme du langage C (C99)
IX. C'est quoi ce 'static' ?
Fonctions
X. Le type retourné par main()
X-A. Historique
XI. C'est quoi un prototype ?
XII. Bibliothèques de fonctions
XII-A. Bibliothèque statique
XII-B. Bibliothèque dynamique
XIII. Pourquoi ma fonction ne modifie pas ma variable ?
XIV. Les fonctions à nombre d'arguments variable
Types et variables
XV. size_t, c'est quoi ?
XVI. Données
XVI-A. Initialisation
XVII. Structures
XVII-A. Structures visibles
XVII-B. Structures opaques
XVII-C. Pseudonymes (ou alias)
XVIII. Variables globales
XVIII-A. Nommage
XVIII-B. Organisation
XVIII-C. Définition
XVIII-D. Déclaration
XVIII-E. Utilisation
XIX. Champs de bits
XX. Bien utiliser const
XX-A. Objets simples
XX-B. Pointeurs
XX-C. Usage
Pointeurs, tableaux, chaines
XXI. Les pointeurs démythifiés !
XXI-A. Introduction
XXI-B. Définition
XXI-B-1. Pointeur sur objet
XXI-B-2. Pointeur de fonction
XXI-B-2-a. Remarques importantes
XXI-C. Du bon usage des pointeurs
XXII. Les pointeurs, ça sert à quoi ?
XXII-A. A quoi ça sert?
XXII-A-1. Petit rappel.
XXII-A-2. Comment faire ?
XXIII. Un tableau n'est pas un pointeur ! Vrai ou faux ?
XXIV. Passer un tableau à une fonction
XXIV-A. Introduction
XXIV-B. Tableau à une dimension
XXIV-C. Tableau à n dimensions
XXV. Retourner un tableau
XXVI. char* char**
XXVI-A. Introduction
XXVI-B. Chaine de caractères
XXVI-C. Le type char *
XXVI-D. Le type char **
XXVII. Initialisation des tableaux de caractères
XXVIII. Qu'est-ce qu'une chaine litterale ?
XXIX. Bien utiliser malloc()
XXIX-A. Suppression du cast
XXIX-A-1. Compilateur non ISO
XXIX-A-2. Compilateur C++
XXIX-B. Déterminer la taille sans le type
XXX. Bien utiliser realloc()
XXXI. Comment créer un tableau dynamique à 2 dimensions ?
Entrees / sorties
XXXII. Saisie de données par un opérateur (stdin)
XXXII-A. Introduction
XXXII-B. fgetc(), getc(), getchar()
XXXII-C. gets()
XXXII-D. scanf()
XXXII-E. fgets()
XXXII-F. Ressources
XXXII-G. Comment fonctionne fgetc(stdin) alias getchar()
XXXII-G-1. Comportement visible.
XXXII-G-2. Comportement interne.
XXXII-G-3. Quelques expérimentations.
XXXIII. Les fichiers
XXXIII-A. Introduction
XXXIII-B. Texte ou binaire ?
XXXIII-B-1. Fichier texte
XXXIII-B-2. Fichier binaire
XXXIII-B-3. Modes d'ouverture d'un fichier
XXXIII-B-4. Lecture d'un fichier
XXXIII-B-4-a. fgetc(), getc()
XXXIII-B-4-b. fread()
XXXIII-B-4-c. fscanf()
XXXIII-B-4-d. fgets()
XXXIII-B-4-d-i. Exemple d'utilisation
XXXIII-B-4-d-ii. Explication
XXXIII-B-4-d-iii. Critique de cet exemple
XXXIII-B-4-d-iv. Détection d'une erreur
XXXIII-B-4-d-v. Gestion des fins de ligne
XXXIII-B-4-d-vi. Exemple amélioré avec détection de la fin de lecture
XXXIII-B-4-d-vii. Explication
XXXIII-B-5. Écriture dans un fichier
XXXIII-B-5-a. fputc(), putc()
XXXIII-B-5-b. fwrite()
XXXIII-B-5-c. fprintf()
XXXIII-B-5-d. fputs()
XXXIII-B-6. Bien utiliser les formats de données
XXXIII-B-6-a. Format orienté texte
XXXIII-B-6-b. Format orienté binaire
XXXIII-C. Supprimer un enregistrement dans un fichier binaire
XXXIII-D. En guise de conclusion
XXXIV. Pourquoi fflush (stdout) ?
Bibliothèque standard
XXXV. <time.h> : La gestion du temps
XXXVI. <time.h> : bien utiliser difftime()
XXXVII. rand(), srand()... j'y comprends rien...
Codage
XXXVIII. Du bon usage de qsort()
XXXIX. Les identificateurs réservés
XL. Bien gérer la portée des objets et des fonctions
XL-A. Fonctions
XL-B. Objets
XL-B-1. Définition hors d'un bloc
XL-B-2. Définition dans un bloc
XL-B-3. Masquage (Shadowing)
XLI. Du bon usage de assert()
XLI-A. Exemple d'utilisation
XLII. Comportement indéfini
XLIII. Les item-lists
XLIII-A. Introduction
XLIII-B. Mise en oeuvre
Divers
XLIV. Borland C : "floating point formats not linked"


Valid XHTML 1.1!Valid CSS!

Copyright © 2009 Emmanuel Delahaye. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.