Identifiant
Mot de passe
Loading...
Mot de passe oublié ?
Je m'inscris ! (gratuit)
Forums
Tutoriels
FAQ
Blogs
Chat
Newsletter
Emploi
Études
Droit
Club
DI/DSI Solutions d'entreprise
DI/DSI Solutions d'entreprise
Big Data
BPM
Business Intelligence
Data Science
ERP / PGI
CRM
SAS
SAP
Sécurité
Droit informatique et entreprise
OnlyOffice
Cloud
Cloud Computing
Oracle
Azure
IBM Cloud
IA
Intelligence artificielle
ALM
ALM
Agile
Merise
UML
Microsoft
Microsoft
.NET
Microsoft Office
Visual Studio
Windows
ASP.NET
TypeScript
C#
VB.NET
Azure
Java
Java
Java Web
Spring
Android
Eclipse
NetBeans
Dév. Web
Développement et hébergement Web
AJAX
Apache
ASP
CSS
Dart
Flash / Flex
JavaScript
NodeJS
PHP
Ruby & Rails
TypeScript
Web sémantique
Webmarketing
(X)HTML
EDI
EDI
4D
Delphi
Eclipse
JetBrains
LabVIEW
NetBeans
MATLAB
Scilab
Visual Studio
WinDev
Visual Basic 6
Lazarus
Qt Creator
Programmation
Programmation
Débuter - Algorithmique
2D - 3D - Jeux
Assembleur
C
C++
C#
D
Go
Kotlin
Objective C
Pascal
Perl
Python
Rust
Swift
Qt
XML
Autres
SGBD
SGBD & SQL
4D
Access
Big Data
Data Science
DB2
Firebird
InterBase
MySQL
NoSQL
PostgreSQL
Oracle
Sybase
SQL-Server
MongoDB
Office
Microsoft Office
Access
Excel
Word
Outlook
PowerPoint
SharePoint
Microsoft Project
OpenOffice & LibreOffice
OnlyOffice
Mobiles
Mobiles
Android
iOS
Systèmes
Systèmes
Windows
Linux
Arduino
Hardware
HPC
Mac
Raspberry Pi
Réseau
Green IT
Sécurité
Systèmes embarqués
Virtualisation
Programmation
Algorithmique
2D-3D-Jeux
Assembleur
C
C++
C#
D
Go
Kotlin
Objective C
Pascal
Perl
Python
Rust
Swift
Qt
XML
Autres
Accueil C
Forums C
FAQ C
Tutoriels C
Livres C
Compilateurs et outils C
Sources C
Bibliothèques C
GTK+
Table des matières
Next:
Avant-propos
Up:
No Title
Previous:
No Title
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
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
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
Exercice
Récréation
Relations entre tableaux et pointeurs
Conversion des tableaux
L'opérateur d'indexation
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
fermeture d'un fichier :
fclose
Lecture et écriture par caractère sur fichier
lecture par caractère :
fgetc
lecture par caractère :
getc
lecture par caractère :
getchar
écriture par caractère :
fputc
écriture par caractère :
putc
écriture par caractère :
putchar
Lecture et écriture par lignes sur fichier
lecture par ligne :
fgets
lecture par ligne :
gets
écriture par chaîne :
fputs
écriture par chaîne :
puts
E/S formattées sur fichiers
Écriture formattée :
fprintf
Écriture formattée :
printf
Écriture formattée dans une chaîne :
sprintf
Exemples d'utilisation des formats
Entrées formattées :
fscanf
Entrées formattées :
scanf
Entrées formattées depuis une chaîne :
sscanf
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
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
Les situations de conversions
La promotion des entiers
Les conversions arithmétiques habituelles
Les surprises des conversions
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
Macros prédéfinies
Les macros avec paramètres
Les pièges des macros
Macros générant des instructions
Compilation conditionnelle
Commande
#if
Commandes
#ifdef
et
#ifndef
L'opérateur
defined
La commande
#error
Usage
Récréation
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
La méthode du langage C
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
Bernard Cassagne
1998-12-09