Table des matières Suivant: Avant-propos Début: ANSI_C Précédent: ANSI_C Table des matières Table des matières Les bases Les versions du langage C Langage et bibliothèque standard Les phases de compilation Les jeux de caractères Les unités lexicales Les mots-clés Les identificateurs Les commentaires Les types de base Les caractères Les entiers Les flottants Les constantes Les constantes entières Attention Les constantes caractères Les constantes flottantes Les chaînes de caractères littérales Les constantes nommées Les #define Les énumérations Déclarations de variables ayant un type de base Les opérateurs les plus usuels L'affectation L'addition La soustraction La multiplication La division L'opérateur modulo Les opérateurs de comparaison Les instructions les plus usuelles Instruction expression Instruction composée Instruction if Inclusion de source Les procédures et les fonctions Définition d'une fonction Appel d'une fonction Les procédures Fonctions imbriquées Récursivité Référence à une fonction externe Comprendre la documentation de la bibliothèque standard Les fonctions dans le style K&R Impression formattée Structure d'un programme Terminaison d'un programme Mise en uvre du compilateur C sous UNIX Exercice Récréation Les tableaux Les tableaux Déclaration de tableaux dont les éléments ont un type de base Initialisation d'un tableau Référence à un élément d'un tableau Chaînes et tableaux de caractères Les instructions itératives Instruction for Exemple de boucle for Instruction while Instruction do Instruction break Instruction continue Les opérateurs Opérateur pré et postincrément Opérateur pré et postdécrément Quelques utilisations typiques de ces opérateurs Opérateur et logique Opérateur ou logique Opérateur non logique Exercice Les pointeurs Notion de pointeur Déclarations de variables de type pointeur vers les types de base Type de pointeur générique Opérateur adresse de Opérateur d'indirection Exercice Pointeurs et opérateurs additifs Opérateurs + et - Opérateurs ++ et - Différence de deux pointeurs Exercice Passage de paramètres Les besoins du programmeur Comment les langages de programmation satisfont ces besoins La stratégie du langage C Discussion Une dernière précision Exercice Lecture formattée Les dernières instructions Instruction switch Instruction goto Instruction nulle Attention Exercice Récréation Relations entre tableaux et pointeurs Conversion des tableaux L'opérateur d'indexation conséquence numéro 1 conséquence numéro 2 conséquence numéro 3 Passage de tableau en paramètre Modification des éléments d'un tableau passé en paramètre Interdiction de modification des éléments d'un tableau passé en paramètre Conversion des chaînes littérales Retour sur printf Exercice Tableaux multidimensionnels Déclarations Accès aux éléments Passage en paramètre Initialisation Exercice Tableau de pointeurs Cas général Tableaux de pointeurs vers des chaînes Paramètres d'un programme Tableau et pointeur, c'est la même chose ? Commentaires Cas particulier des chaînes littérales Récréation Les entrées-sorties Pointeur invalide Ouverture et fermeture de fichiers Ouverture d'un fichier : fopen Utilisation Sémantique des paramètres Valeur rendue Conditions particulières et cas d'erreur Les voies de communication standard Utilisation typique de fopen fermeture d'un fichier : fclose Utilisation Sémantique des paramètres Valeur rendue Utilisation typique Lecture et écriture par caractère sur fichier lecture par caractère : fgetc Utilisation Sémantique des paramètres Description Valeur rendue Utilisation typique lecture par caractère : getc lecture par caractère : getchar Utilisation Description écriture par caractère : fputc Utilisation Sémantique des paramètres Description Valeur rendue Utilisation typique lecture par caractère : putc écriture par caractère : putchar Utilisation Description Lecture et écriture par lignes sur fichier lecture par ligne : fgets Utilisation Sémantique des paramètres Valeur rendue Description Utilisation typique lecture par ligne : gets Utilisation Sémantique des paramètres Valeur rendue Description écriture par chaîne : fputs Utilisation Sémantique des paramètres Valeur rendue Description Utilisation typique écriture par chaîne : puts Utilisation Sémantique des paramètres Valeur rendue Description E/S formattées sur fichiers Ecriture formattée : fprintf Utilisation Sémantique des paramètres Valeur rendue Présentation Les séquences d'échappement Ecriture formattée : printf Utilisation Description Ecriture formattée dans une chaîne : sprintf Utilisation Description Exemples d'utilisation des formats Entrées formattées : fscanf Utilisation Sémantique des paramètres Valeur rendue Description Quelques définitions Les séquences d'échappement Algorithme de fscanf Remarques sur la gestion des espaces blancs Entrées formattées : scanf Utilisation Description Entrées formattées depuis une chaîne : sscanf Utilisation Description Récréation Exercice 1 Exercice 2 Structures, unions et énumérations Notion de structure Déclaration de structure Opérateurs sur les structures Accès aux membres des structures Affectation de structures Comparaison de structures Tableaux de structures Exercice Pointeurs vers une structure Structures dont un des membres pointe vers une structure du même type Accès aux éléments d'une structure pointée Passage de structures en paramètre Détermination de la taille allouée à un type Retour sur la conversion des tableaux Allocation et libération d'espace pour les structures Allocation d'espace : fonctions malloc et calloc Allocation d'un élément : fonction malloc Allocation d'un tableau d'éléments : fonction calloc Libération d'espace : procédure free Exercice Les champs de bits Généralités Contraintes Les énumérations Les unions Accès aux membres de l'union Utilisation pratique des unions Une méthode pour alléger l'accès aux membres Les expressions Les conversions de types Utilité des conversions Ce qu'il y a dans une conversion L'ensemble des conversions possibles Conversions vers un type entier Conversions vers un type flottant Conversion vers un type pointeur Conversion vers le type void Les situations de conversions La promotion des entiers Domaine d'application La règle Les conversions arithmétiques habituelles Domaine d'application La règle Discussion Les surprises des conversions Recommandations Les opérateurs Opérateur non bit à bit Opérateur et bit à bit Opérateur ou bit à bit Opérateur ou exclusif bit à bit Opérateur décalage à gauche Opérateur décalage à droite Opérateur conditionnel Opérateur virgule Opérateurs d'affectation composée Opérateur conversion Sémantique des expressions Opérateurs d'adressage Priorité et associativité des opérateurs Ordre d'évaluation des opérandes Récréation Le préprocesseur Traitement de macros Les macros sans paramètres Exemple de mauvaise utilisation Définition de macro à l'invocation du compilateur Macros prédéfinies Les macros avec paramètres Attention Exemple Exemple de mauvaise utilisation Les pièges des macros Pièges des priorités d'opérateurs Pièges des effets de bord Macros générant des instructions Recommandation Compilation conditionnelle Commande #if Commande #if simple Commande #if avec #else Commande #if avec #elif Commandes #ifdef et #ifndef L'opérateur defined La commande #error Usage Les déclarations Déclarations de définition et de référence Déclarations de variables Déclarations de fonctions Déclarations d'étiquettes de structures et union Portée des déclarations Visibilité des identificateurs Les espaces de noms Position du problème Les espaces de noms du langage C Durée de vie Classes de mémoire Position du problème Les spécificateurs de classe de mémoire La compilation séparée Généralités Méthode des réfs et des défs Méthode du common La méthode du langage C Les contraintes En pratique Le cas des fonctions Définition de types Utilité des typedef Restriction d'un type de base Définition de type structure Définition de types opaques Qualificatifs de type Fonction à nombre variable de paramètres Exemple 1 Exemple 2 Syntaxe des déclarations Sémantique des déclarations Discussion sur les déclarations En pratique Un outil : cdecl La bibliothèque standard Diagnostic Manipulation de caractères <ctype.h> Environnement local <locale.h> Mathématiques <math.h> Fonctions trigonométriques et hyperboliques Fonctions exponentielles et logarithmiques Fonctions diverses Branchements non locaux <setjmp.h> Manipulation des signaux <signal.h> Nombre variable de paramètres <stdarg.h> Entrées sorties <stdio.h> Opérations sur les fichiers Accès aux fichiers Entrées-sorties formattées Entrées-sorties caractères Entrées-sorties binaires Position dans un fichier Gestion des erreurs Utilitaires divers <stdlib.h> Conversion de nombres Génération de nombres pseudo-aléatoires gestion de la mémoire Communication avec l'environnement Recherche et tri Arithmétique sur les entiers Gestion des caractères multi-octets Manipulation de chaînes <string.h> Manipulation de la date et de l'heure <time.h> Les jeux de caractères Les normes Le code ascii Les codes ascii en octal Les codes ascii en hexadécimal Les codes ascii en décimal Les codes ISO-Latin-1 Bibliographie Ressources Internet La grammaire Les unités lexicales Les mots-clés Les identificateurs Les constantes Les chaînes littérales Les opérateurs La ponctuation Nom de fichier d'inclusion Les nombres du préprocesseur Les expressions Les déclarations Les instructions Définitions externes Directives du préprocesseur Références croisées de la grammaire Un bestiaire de types Les types de base Les tableaux Les pointeurs Les fonctions Les énumérations Les structures, unions et champs de bits Les qualificatifs Le bêtisier Erreur avec les opérateurs Erreur sur une comparaison Erreur sur l'affectation Erreurs avec les macros Un #define n'est pas une déclaration Un #define n'est pas une initialisation Erreur sur macro avec paramètres Erreur avec les effets de bord Erreurs avec l'instruction if Erreurs avec les commentaires Erreurs avec les priorités des opérateurs Erreur avec l'instruction switch Oubli du break Erreur sur le default Erreur sur les tableaux multidimensionnels Erreur avec la compilation séparée Index 30/9/1997