Vous êtes ici :
Introduction au langage C
Table des matières
- 1 Les bases
- 1.1 Les versions du langage C
- 1.2 Langage et bibliothèque standard
- 1.3 Les phases de compilation
- 1.4 Les jeux de caractères
- 1.5 Les unités lexicales
- 1.5.1 Les mots-clés
- 1.5.2 Les identificateurs
- 1.6 Les commentaires
- 1.7 Les types de base
- 1.7.1 Les caractères
- 1.7.2 Les entiers
- 1.7.3 Les flottants
- 1.8 Les constantes
- 1.8.1 Les constantes entières
- 1.8.2 Les constantes caractères
- 1.8.3 Les constantes flottantes
- 1.9 Les chaînes de caractères littérales
- 1.10 Les constantes nommées
- 1.10.1 Les #define
- 1.10.2 Les énumérations
- 1.11 Déclarations de variables ayant un type de base
- 1.12 Les opérateurs les plus usuels
- 1.12.1 L'affectation
- 1.12.2 L'addition
- 1.12.3 La soustraction
- 1.12.4 La multiplication
- 1.12.5 La division
- 1.12.6 L'opérateur modulo
- 1.12.7 Les opérateurs de comparaison
- 1.13 Les instructions les plus usuelles
- 1.13.1 Instruction expression
- 1.13.2 Instruction composée
- 1.13.3 Instruction if
- 1.14 Inclusion de source
- 1.15 Les procédures et les fonctions
- 1.15.1 Définition d'une fonction
- 1.15.2 Appel d'une fonction
- 1.15.3 Les procédures
- 1.15.4 Fonctions imbriquées
- 1.15.5 Récursivité
- 1.15.6 Référence à une fonction externe
- 1.15.7 Comprendre la documentation de la bibliothèque standard
- 1.15.8 Les fonctions dans le style K&R
- 1.16 Impression formattée
- 1.17 Structure d'un programme
- 1.18 Terminaison d'un programme
- 1.19 Mise en oeuvre du compilateur C sous UNIX
- 1.20 Exercice
- 1.21 Récréation
- 2 Les tableaux
- 2.1 Les tableaux
- 2.1.1 Déclaration de tableaux dont les éléments ont un type de base
- 2.1.2 Initialisation d'un tableau
- 2.1.3 Référence à un élément d'un tableau
- 2.1.4 Chaînes et tableaux de caractères
- 2.2 Les instructions itératives
- 2.2.1 Instruction for
- 2.2.2 Instruction while
- 2.2.3 Instruction do
- 2.2.4 Instruction break
- 2.2.5 Instruction continue
- 2.3 Les opérateurs
- 2.3.1 Opérateur pré et post incrément
- 2.3.2 Opérateur pré et post décrément
- 2.3.3 Quelques utilisations typiques de ces opérateurs
- 2.3.4 Opérateur et logique
- 2.3.5 Opérateur ou logique
- 2.3.6 Opérateur non logique
- 2.4 Exercice
- 3 Les pointeurs
- 3.1 Notion de pointeur
- 3.2 Déclarations de variables de type pointeur vers les types de base
- 3.3 Type de pointeur générique
- 3.4 Opérateur adresse de
- 3.5 Opérateur d'indirection
- 3.6 Exercice
- 3.7 Pointeurs et opérateurs additifs
- 3.7.1 Opérateurs + et -
- 3.7.2 Opérateurs ++ et --
- 3.8 Différence de deux pointeurs
- 3.9 Exercice
- 3.10 Passage de paramètres
- 3.10.1 Les besoins du programmeur
- 3.10.2 Comment les langages de programmation satisfont ces besoins
- 3.10.3 La stratégie du langage C
- 3.11 Discussion
- 3.12 Une dernière précision
- 3.13 Exercice
- 3.14 Lecture formattée
- 3.15 Les dernières instructions
- 3.15.1 Instruction switch
- 3.15.2 Instruction goto
- 3.15.3 Instruction nulle
- 3.16 Exercice
- 3.17 Récréation
- 4 Relations entre tableaux et pointeurs
- 4.1 Conversion des tableaux
- 4.2 L'opérateur d'indexation
- 4.3 Passage de tableau en paramètre
- 4.4 Modification des éléments d'un tableau passé en paramètre
- 4.5 Interdiction de modification des éléments d'un tableau passé en paramètre
- 4.6 Conversion des chaînes littérales
- 4.7 Retour sur printf
- 4.8 Exercice
- 4.9 Tableaux multidimensionnels
- 4.9.1 Déclarations
- 4.9.2 Accès aux éléments
- 4.9.3 Passage en paramètre
- 4.10 Initialisation
- 4.11 Exercice
- 4.12 Tableau de pointeurs
- 4.12.1 Cas général
- 4.12.2 Tableaux de pointeurs vers des chaînes
- 4.12.3 Paramètres d'un programme
- 4.13 Tableau et pointeur, c'est la même chose ?
- 4.13.1 Commentaires
- 4.13.2 Cas particulier des chaînes littérales
- 4.14 Récréation
- 5 Les entrées-sorties
- 5.1 Pointeur invalide
- 5.2 Ouverture et fermeture de fichiers
- 5.2.1 Ouverture d'un fichier : fopen
- 5.2.2 fermeture d'un fichier : fclose
- 5.3 Lecture et écriture par caractère sur fichier
- 5.3.1 lecture par caractère : fgetc
- 5.3.2 lecture par caractère : getc
- 5.3.3 lecture par caractère : getchar
- 5.3.4 écriture par caractère : fputc
- 5.3.5 écriture par caractère : putc
- 5.3.6 écriture par caractère : putchar
- 5.4 Lecture et écriture par lignes sur fichier
- 5.4.1 lecture par ligne : fgets
- 5.4.2 lecture par ligne : gets
- 5.4.3 écriture par chaîne : fputs
- 5.4.4 écriture par chaîne : puts
- 5.5 E/S formattées sur fichiers
- 5.5.1 écriture formattée : fprintf
- 5.5.2 écriture formattée : printf
- 5.5.3 écriture formattée dans une chaîne : sprintf
- 5.5.4 Exemples d'utilisation des formats
- 5.5.5 Entrées formattées : fscanf
- 5.5.6 Entrées formattées : scanf
- 5.5.7 Entrées formattées depuis une chaîne : sscanf
- 5.6 Récréation
- 5.7 Exercice 1
- 5.8 Exercice 2
- 6 Structures, unions et énumérations 103
- 6.1 Notion de structure
- 6.2 Déclaration de structure
- 6.3 Opérateurs sur les structures
- 6.3.1 Accés aux membres des structures
- 6.3.2 Affectation de structures
- 6.3.3 Comparaison de structures
- 6.4 Tableaux de structures
- 6.5 Exercice
- 6.6 Pointeurs vers une structure
- 6.7 Structures dont un des membres pointe vers une structure du même type
- 6.8 Accès aux éléments d'une structure pointée
- 6.9 Passage de structures en paramètre
- 6.10 Détermination de la taille allouée à un type
- 6.10.1 Retour sur la conversion des tableaux
- 6.11 Allocation et libération d'espace pour les structures
- 6.11.1 Allocation d'espace : fonctions malloc et calloc
- 6.11.2 Libération d'espace : procédure free
- 6.12 Exercice
- 6.13 Les champs de bits
- 6.13.1 Généralités
- 6.13.2 Contraintes
- 6.14 Les énumérations
- 6.15 Les unions
- 6.16 Accès aux membres de l'union
- 6.17 Utilisation pratique des unions
- 6.18 Une méthode pour alléger l'accès aux membres
- 7 Les expressions
- 7.1 Les conversions de types
- 7.1.1 Utilité des conversions
- 7.1.2 Ce qu'il y a dans une conversion
- 7.1.3 L'ensemble des conversions possibles
- 7.1.4 Les situations de conversions
- 7.1.5 La promotion des entiers
- 7.1.6 Les conversions arithmétiques habituelles
- 7.1.7 Les surprises des conversions
- 7.2 Les opérateurs
- 7.2.1 Opérateur non bit à bit
- 7.2.2 Opérateur et bit à bit
- 7.2.3 Opérateur ou bit à bit
- 7.2.4 Opérateur ou exclusif bit à bit
- 7.2.5 Opérateur décalage à gauche
- 7.2.6 Opérateur décalage à droite
- 7.2.7 Opérateur conditionnel
- 7.2.8 Opérateur virgule
- 7.2.9 Opérateurs d'affectation composée
- 7.3 Opérateur conversion
- 7.4 Sémantique des expressions
- 7.4.1 Opérateurs d'adressage
- 7.4.2 Priorité et associativité des opérateurs
- 7.4.3 Ordre d'évaluation des opérandes
- 7.5 Récréation
- 8 Le préprocesseur
- 8.1 Traitement de macros
- 8.1.1 Les macros sans paramètres
- 8.1.2 Macros prédéfinies
- 8.1.3 Les macros avec paramètres
- 8.1.4 Les pièges des macros
- 8.1.5 Macros générant des instructions
- 8.2 Compilation conditionnelle
- 8.2.1 Commande #if
- 8.2.2 Commandes #ifdef et #ifndef
- 8.2.3 L'opérateur defined
- 8.2.4 La commande #error
- 8.2.5 Usage
- 8.3 Récréation
- 9 Les déclarations
- 9.1 Déclarations de définition et de reférence
- 9.1.1 Déclarations de variables
- 9.1.2 Déclarations de fonctions
- 9.1.3 Déclarations d'étiquettes de structures et union
- 9.2 Portée des déclarations
- 9.3 Visibilité des identificateurs
- 9.4 Les espaces de noms
- 9.4.1 Position du problème
- 9.4.2 Les espaces de noms du langage C
- 9.5 Durée de vie
- 9.6 Classes de mémoire
- 9.6.1 Position du problème
- 9.6.2 Les spécificateurs de classe de mémoire
- 9.7 La compilation séparée
- 9.7.1 Généralités
- 9.7.2 La méthode du langage C
- 9.8 Définition de types
- 9.9 Utilité des typedef
- 9.9.1 Restriction d'un type de base
- 9.9.2 Définition de type structure
- 9.9.3 Définition de types opaques
- 9.10 Qualificatifs de type
- 9.11 Fonction à nombre variable de paramètres
- 9.11.1 Exemple 1
- 9.11.2 Exemple 2
- 9.12 Syntaxe des déclarations
- 9.13 Sémantique des déclarations
- 9.14 Discussion sur les déclarations
- 9.15 En pratique
- 9.16 Un outil : cdecl
- 10 La bibliothèque standard
- 10.1 Diagnostic
- 10.2 Manipulation de caractères <ctype.h>
- 10.3 Environnement local <locale.h>
- 10.4 Mathématiques <math.h>
- 10.4.1 Fonctions trigonométriques et hyperboliques
- 10.4.2 Fonctions exponentielles et logarithmiques
- 10.4.3 Fonctions diverses
- 10.5 Branchements non locaux <setjmp.h>
- 10.6 Manipulation des signaux <signal.h>
- 10.7 Nombre variable de paramètres <stdarg.h>
- 10.8 Entrées sorties <stdio.h>
- 10.8.1 Opérations sur les fichiers
- 10.8.2 Accès aux fichiers
- 10.8.3 Entrées-sorties formattées
- 10.8.4 Entrées-sorties caractères
- 10.8.5 Entrées-sorties binaires
- 10.8.6 Position dans un fichier
- 10.8.7 Gestion des erreurs
- 10.9 Utilitaires divers <stdlib.h>
- 10.9.1 Conversion de nombres
- 10.9.2 Génération de nombres pseudo-aléatoires
- 10.9.3 gestion de la mémoire
- 10.9.4 Communication avec l'environnement
- 10.9.5 Recherche et tri
- 10.9.6 Arithmétique sur les entiers
- 10.9.7 Gestion des caractères multi-octets
- 10.10 Manipulation de chaînes <string.h>
- 10.11 Manipulation de la date et de l'heure <time.h>
- A Les jeux de caractères
- A.1 Les normes
- A.2 Le code ascii
- A.2.1 Les codes ascii en octal
- A.2.2 Les codes ascii en hexadécimal
- A.2.3 Les codes ascii en décimal
- A.3 Les codes ISO-Latin-1
- B Bibliographie
- C Ressources Internet
- D La grammaire
- D.1 Les unités lexicales
- D.2 Les mots-clés
- D.3 Les identificateurs
- D.4 Les constantes
- D.5 Les chaînes littérales
- D.6 Les opérateurs
- D.7 La ponctuation
- D.8 Nom de fichier d'inclusion
- D.9 Les nombres du préprocesseur
- D.10 Les expressions
- D.11 Les déclarations
- D.12 Les instructions
- D.13 Définitions externes
- D.14 Directives du préprocesseur
- D.15 Références croisées de la grammaire
- E Un bestiaire de types
- E.1 Les types de base
- E.2 Les tableaux
- E.3 Les pointeurs
- E.4 Les fonctions
- E.5 Les énumérations
- E.6 Les structures, unions et champs de bits
- E.7 Les qualificatifs
- F Le bêtisier
- F.1 Erreur avec les opérateurs
- F.1.1 Erreur sur une comparaison
- F.1.2 Erreur sur l'affectation
- F.2 Erreurs avec les macros
- F.2.1 Un #define n'est pas une déclaration
- F.2.2 Un #define n'est pas une initialisation
- F.2.3 Erreur sur macro avec paramètres
- F.2.4 Erreur avec les effets de bord
- F.3 Erreurs avec l'instruction if
- F.4 Erreurs avec les commentaires
- F.5 Erreurs avec les priorités des opérateurs
- F.6 Erreur avec l'instruction switch
- F.6.1 Oubli du break
- F.6.2 Erreur sur le default
- F.7 Erreur sur les tableaux multidimensionnels
- F.8 Erreur avec la compilation séparée
ero-Un'